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(视频)Http下载
Dec 12 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
php var_export与var_dump 输出的不同
Aug 09 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
php并发加锁示例
Oct 17 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
php实现留言板功能(代码详解)
Mar 28 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 PHP
详解no input file specified 三种解决方法
Nov 29 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
php 如何获取数组第一个值
2013/08/06 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
jquery延迟加载外部js实现代码
2013/01/11 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
Python清空文件并替换内容的实例
2018/10/22 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
西安当代医院管理研究院笔试题
2015/12/11 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
机电专业毕业生推荐信
2013/11/10 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
家长给学校的建议书
2014/05/15 职场文书
单位授权委托书范文
2014/08/02 职场文书
具结保证书
2015/01/17 职场文书
护理工作个人总结
2015/03/03 职场文书
公司辞职信模板
2015/05/13 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python