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 相关文章推荐
将数字格式的计算结果转为汉字格式
Oct 09 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
php接口技术实例详解
Dec 07 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
php workerman定时任务的实现代码
Dec 23 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
Laravel+Intervention实现上传图片功能示例
Jul 09 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 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
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
JS 作用域与作用域链详解
2015/04/07 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
Python中如何获取类属性的列表
2016/12/26 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python解决字符串倒序输出的问题
2018/06/25 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
python 实现多维数组转向量
2019/11/30 Python
什么是python的id函数
2020/06/11 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
车间主管岗位职责
2013/11/14 职场文书
园林设计师自荐信
2013/11/18 职场文书
《口技》教学反思
2014/02/21 职场文书
法学专业求职信
2014/07/15 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
圣诞晚会主持词
2015/07/01 职场文书
利用Java连接Hadoop进行编程
2022/06/28 Java/Android