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生成静态页面详解
Dec 05 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 PHP
Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 PHP
phpStudy vscode 搭建debug调试的教程详解
Jul 28 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 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
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
php异常处理方法实例汇总
2015/06/24 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
关于this和self的使用说明
2010/08/01 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
python+opencv实现动态物体识别
2018/01/09 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
python绘制多个子图的实例
2019/07/07 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
python实现单链表的方法示例
2019/09/03 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
Python利用命名空间解析XML文档
2020/08/10 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
SQL语言面试题
2013/08/27 面试题
社会实践自我鉴定
2013/11/07 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
干部作风建设心得体会
2014/10/22 职场文书
消防宣传标语大全
2015/08/03 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书