我是个会写程序的产品经理,但本博只谈技术不谈产品,mysql / nginx / php / html5 / javascript
重负荷nginx的几个关键配置参数
不知不觉网站PV就爆发了。nginx压力越来越大,一些默认参数就显得不够用了。
我们的主服务器硬件配置非常健壮(双路至强5620 + 48GB内存 + SSD),理论上可以承受每天过500万的PV,当然,前提是优化得够好。
简单罗列一下优化过的几个参数:
- ulimit -n 65535这个参数位于/etc/default/nginx 中,或者/etc/init.d/nginx 文件中直接设置。
默认是1024,意思是最多打开的文件个数。1024怎么够,至少开到8192,网上很多文章都直接开到了65535。
- worker_processes 8;
worker数量,位于nginx.conf头部,一般来说有几个cpu核心开几个,不算超线程。 - worker_rlimit_nofile 65535;
位于nginx.conf头部,也是文件数量限制,直接开大吧。 - worker_connections 4096;
位于nginx.conf中,默认是1024,也不够。 - 另外,建议编译nginx的时候顺带编译status模块,以便监视性能。
location /status/ {
stub_status on;
}
小小炫耀一下服务器的status参数,想当年刚用nginx的时候,Writing参数不是0就是1,现在已经这么大了:
Active connections: 2140 server accepts handled requests 14727928 14727602 24524267 Reading: 92 Writing: 28 Waiting: 2020
Related posts:
ulimit 这个参数的设置应该是在/etc/security/limit.conf和 /etc/pam.d/login
这样更安全。对每个用户的ulimit控制的更好。
同时,据我个人经验,也不是开的越大越好,这个与硬件处理能力有关。