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 面向对象实现代码
Nov 11 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
解析php常用image图像函数集
Jun 24 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
php数组添加元素方法小结
Dec 20 PHP
php session 写入数据库
Feb 13 PHP
php日期操作技巧小结
Jun 25 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
laravel 验证错误信息到 blade模板的方法
Sep 29 PHP
laravel 解决Validator使用中出现的问题
Oct 25 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的cms
2010/12/19 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
python 不以科学计数法输出的方法
2018/07/16 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
python http基本验证方法
2018/12/26 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python实现图片中文字分割效果
2019/07/22 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
家电业务员岗位职责
2014/03/10 职场文书
大学生求职信怎么写
2015/03/19 职场文书
民事代理词范文
2015/05/25 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫