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 相关文章推荐
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
PHP实现下载功能的代码
Sep 29 PHP
WordPress中"无法将上传的文件移动至"错误的解决方法
Jul 01 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
May 17 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 PHP
php查询及多条件查询
Feb 26 PHP
Yii框架函数简单用法分析
Sep 09 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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
基于mysql的论坛(1)
2006/10/09 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
数据库的约束含义
2012/09/09 面试题
施工安全标语
2014/06/07 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
手机销售员岗位职责
2015/04/11 职场文书
党小组评议意见
2015/06/02 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫