解决大流量问题

对于当今大流量的网站,天天几千万甚至上亿的流量,是如何解决访问量问题的呢?

如下是一些总结的方法:  第一,确认服务器硬件是否足够支持当前的流量。  普通的P4服务器通常最多能支持天天10万独立IP,若是访问量比这个还要大,那么必须首先配置一台更高性能的专用服务器才能解决问题,不然怎么优化都不可能完全解决性能问题。 php

第二,优化数据库访问。  服务器的负载过大,一个重要的缘由是CPU负荷过大,下降服务器CPU的负荷,才可以有效打破瓶颈。而使用静态页面可使得CPU的负荷最小化。前台实现彻底的静态化 固然最好,能够彻底不用访问数据库,不过对于频繁更新的网站,静态化每每不能知足某些功能。  缓存技术 就是另外一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而没必要再访问数据库,WordPress和Z-Blog都大量使用这种缓存技术 。我本身也写过一个Z-Blog的计数器插件,也是基于这样的原理。  若是确实没法避免对数据库的访问,那么能够尝试优化数据库的查询SQL.避免使用Select *from这样的语句,每次查询只返回本身须要的结果,避免短期内的大量SQL查询。 前端

第三,禁止外部的盗链。  外部网站的图片或者文件盗链每每会带来大量的负载压力,所以应该严格限制外部对于自身的图片或者文件盗链,好在目前能够简单地经过refer来控制盗链,Apache本身就能够经过配置来禁止盗链,IIS也有一些第三方的ISAPI能够实现一样的功能。固然,伪造refer也能够经过代码来实现盗 链,不过目前蓄意伪造refer盗链的还很少,能够先不去考虑,或者使用非技术手段来解决,好比在图片上增长水印。 mysql

第四,控制大文件的下载。  大文件的下载会占用很大的流量,而且对于非SCSI硬盘来讲,大量文件下载会消耗CPU,使得网站响应能力降低。所以,尽可能不要提供超过2M的大 文件下载,若是须要提供,建议将大文件放在另一台服务器上。目前有很多免费的Web2.0网站提供图片分享和文件分享功能,所以能够尽可能将图片和文件上 传到这些分享网站。sql

  第五,使用不一样主机分流主要流量  将文件放在不一样的主机上,提供不一样的镜像供用户下载。好比若是以为RSS文件占用流量大,那么使用FeedBurner或者FeedSky等服务将RSS输出放在其余主机上,这样别人访问的流量压力就大多集中在FeedBurner的主机上,RSS就不占用太多资源了。 数据库

第六,使用流量分析统计软件。  在网站上安装一个流量分析统计软件,能够即时知道哪些地方耗费了大量流量,哪些页面须要再进行优化,所以,解决流量问题还须要进行精确的统计分析 才能够。我推荐使用的流量分析统计软件是GoogleAnalytics(Google分析)。我使用过程当中感受其效果很是不错,稍后我将详细介绍一下 GoogleAnalytics的一些使用常识和技巧。   1.分表 2.读写分离 3.前端优化。Nginx替换Apache(前端作负载均衡) 我的认为主要仍是分布式架构是否到位,mysql和缓存的优化都是有限度的优化,而分布式架构作出来了,PV增加后,只须要堆机器就能扩容。缓存

另附一些优化经验,首先学会用explain语句分析select语句,优化索引、表结构,其次,合理运用memcache等缓存,下降mysql的负载,最后,若是可能的话,尽可能用facebook的hiphop-php把PHP编译了,提升程序效率。服务器

相关文章
相关标签/搜索