使用Tengine(Nginx)+Apache+PHP缓存构架搭建高可用伺服

本文摘要:Nginx是俄罗斯Igor大师的旷世之作,这款轻量级的伺服器现已被各大巨头网站(百度 淘宝 腾讯等)所采用,其采用的epoll模型可以轻松应对数万并发。但我们的网站时不时的会502 503一下,......

Nginx是俄罗斯Igor大师的旷世之作,这款轻量级的伺服器现已被各大巨头网站(百度 淘宝 阿里云等)所采用,其采用的epoll模型可以轻松应对数万并发。但我们的网站时不时的会502 503一下,如何应对呢?
第一步:丢掉可恶的FastCGI,启用Nginx Apache PHP方式来跑PHP。经过长期的实践,无论FastCGI如何调优,在高并发时候,FastCGI抛出502的概率远大于Apache php的mod_php方式。Apache在处理PHP程序时比FastCGI要成熟得多,如果贵站有订单系统等比较重要的业务,对稳定性要求较高,更建议你使用Apache方式。
第二部:配置NGINX Apache PHP环境,可以使用http://lnmp.org/install.html安装NGINX PHP MySQL后再执行./apache.sh继续安装apache。

第三步:配置缓存(别相信PHP程序的磁盘IO缓存,在高并发换进里起到的作用微乎其微),使用NGINX的location配置,将php的动态缓存配置为
proxy_cache_key $host$request_uri$cookie_USER_PART;proxy_cache_valid 200 204 301 302 304 10s;proxy_cache_valid 500 502 503 5s;这里的$cookie_USER_PART替换成CMS里鉴别用户的COOKI的名字。
缓存区块定义到/dev/shm/下,阿里云的磁盘IO本身是硬伤,所以只能用内存来弥补了。
*.如果是个人博客,完全可以将$cookie_USER_PART删掉,应为大家看到的差不多就是一样的页面。
重载以下NGINX,基本上就完事了,然后可以用webbench压测一下,目测能跑上上万并发且不影响太多的CPU占用,本人的博客使用了如上构架,欢迎webbench压测,带宽小,手下留情啊。

本文原作者:阿里云论坛IDenj0y

标签