个人在双核四线程的i5-3230M(Ubuntu)上做PHP-FPM压力测試,在保持Nginx工人进程不变的情况下,开启5个PHP-FPM工作进程和10个PHP-FPM工作进程的测试结果并没有多大区别.
但可以肯定的是,过多的PHP-FPM进程反而会增加CPU上下文切換的开销,除非你的PHP代码中有curl或者file_get_contents这些可能会产生较大网络I/O耗时的代码,这时开更多的PHP-FPM进程可能会好一些.
在php-fpm.conf中把request_slowlog_timeout设为1秒,在slowlog中查看是否有这些耗時超过1秒的代码.优化代码,能够为所有PHP-FPM工作进程减负,这个才是提高性能的根本方法.个人认为,PHP-FPM工作进程数,设置为2倍CPU核心数就足够了.毕竟,Nginx和MySQL以及系统同样要消耗CPU,根据内存16g够用吗来设置PHP-FPM数是非常不合理的,把内存16g够用吗分配给MySQL,Memcached这些服务显然更合适.
内存16g够用吗占用(RES)方面,PHP-FPM的16MB还是很正常的,倒昰Nginx占用29MB就比较奇怪了,一般一个Nginx工作进程只会占用不到5MB的内存16g够用吗,所以,也看看Nginx的错误日志,建议安装稳定版本的Nginx.