这是一个php程序员面试过程中经常遇到的问题,就目前工作环境中的情况来看,这种千万级别的访问量的情况还没遇到,在百度中找到这样一篇文章,可能对这个问题有帮助。
用一台1U服务器让phpwind承受1000万PV(实际营运)
臭现下,偶的网站已经经过1000万PV的考验了(百度统计结果)
1000万pv的实际论坛是很恐怖的,因为这样的论坛日发帖一般大于10万,会员数据超过200万,帖子总数超千万。
1、 解决流量问题,1000w pv,我做过检测,每秒流量高达300M以上,我采用了多网卡来解决。用了4个网卡口子,每口100M,就可以承受400M流量了。1U服务器一般只有2 个网口,可以增加USB网卡,目前有几种芯片的USB网卡在linux下是自动识别的。1000M的端口机房是很贵的,10万以上每年。所以采用多网卡负 荷分担是经济实用的。
2、解决mysql瓶颈问题,首先要学会mysql的配置优化my.cnf的优化,然后要对程序进行优化,目前的免 费bbs程序,在负载上都是很垃圾的(pw和dz在程序上很少考虑大负载问题,VBB没有仔细关注过,可能vbb要好很多),需要实际中调试慢查询,优化 sql语句,注意用子查询进行分页,不要简单的使用limite start,num ,某些频繁查询而又不是经常变化的sql尽量使用缓存技术,对访问频繁的页面,例如首页,必须对sql以及php的运算都进行优化,做到像访问html一 样访问bbs首页。
3、使用memcache对mysql数据进行缓存,虽然有数据延迟,但可以很大的降低mysql的负荷。
4、使用nginx + eac 做web ,eac共享内存设置为60M即可,不能太大,nginx开10个线程。
5、使用lighttp的spawn-cgi + php-cgi 开启至少256个线程。不要使用php-fpm,这玩意儿在千万pv的大压力时,会出问题,频繁假死
6、解决搜索问题,选择使用中文全文索引
硬件配置:2个4核Xeon5405 + 12G RAM + 4x300G SAS raid0