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 22 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
Nov 04 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
php封装一个异常的处理类
2017/06/08 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
javascript 面向对象编程 function也是类
2009/09/17 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
canvas实现钟表效果
2017/02/13 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
python交互式图形编程实例(一)
2017/11/17 Python
python连接mongodb密码认证实例
2018/10/16 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python算法题 链表反转详解
2019/07/02 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
struct与class的区别
2014/02/03 面试题
服装设计师求职信
2014/06/04 职场文书
农村婚庆主持词
2015/06/29 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js