PHP如何解决网站大流量与高并发的问题


Posted in PHP onJune 25, 2011

首先,确认服务器硬件是否足够支持当前的流量。

普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大,
那么必须首先配置一台更高性能的专用服务器才能解决问题

,否则怎么优化都不可能彻底解决性能问题。

其次,优化数据库访问。

前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站,
静态化往往不能满足某些功能。

缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用
这些文件,而不必再访问数据库,WordPress和Z-Blog都大量使用这种缓存技术。我
自己也写过一个Z-Blog的计数器插件,也是基于这样的原理。

如果确实无法避免对数据库的访问,那么可以尝试优化数据库的查询SQL.避免使用
Select * from这样的语句,每次查询只返回自己需要的结果,避免短时间内的大
量SQL查询。

第三,禁止外部的盗链。

外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对
于自身的图片或者文件盗链,好在目前可以简单地通过refer来控制盗链,Apache自
己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当
然,伪造refer也可以通过代码来实现盗链,不过目前蓄意伪造refer盗链的还不多,
可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。

第四,控制大文件的下载。

大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗
CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载,如果需要
提供,建议将大文件放在另外一台服务器上。

第五,使用不同主机分流主要流量

将文件放在不同的主机上,提供不同的镜像供用户下载。比如如果觉得RSS文件占用
流量大,那么使用FeedBurner或者FeedSky等服务将RSS输出放在其他主机上,这
样别人访问的流量压力就大多集中在FeedBurner的主机上,RSS就不占用太多资源了。

第六,使用流量分析统计软件。

在网站上安装一个流量分析统计软件,可以即时知道哪些地方耗费了大量流量,哪些页
面需要再进行优化,因此,解决流量问题还需要进行精确的统计分析才可以。我推荐使
用的流量分析统计软件是Google Analytics(Google分析)。我使用过程中感觉其
效果非常不错,稍后我将详细介绍一下Google Analytics的一些使用常识和技巧。

PHP 相关文章推荐
ezSQL PHP数据库操作类库
May 16 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
PHP递归实现层级树状展开
Apr 01 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
PHP文件操作实例总结
Sep 27 PHP
微信自定义分享php代码分析
Nov 24 PHP
PHP反射学习入门示例
Jun 14 PHP
解决Laravel5.5下的toArray问题
Oct 15 PHP
session在PHP大型web应用中的使用
Jun 25 #PHP
php URL跳转代码 减少外链
Jun 25 #PHP
php session安全问题分析
Jun 24 #PHP
使用PHP实现二分查找算法代码分享
Jun 24 #PHP
PHP求最大子序列和的算法实现
Jun 24 #PHP
php中转义mysql语句的实现代码
Jun 24 #PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 #PHP
You might like
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
Python实现的彩票机选器实例
2015/06/17 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
学生自我鉴定
2013/12/18 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
文秘自荐信
2014/06/28 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
授权收款委托书范本
2014/10/10 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
护士2014年终工作总结
2014/11/11 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers