设置apache以fastcgi方式运行
在此之前PHP(5.6)都是以Apache的模块mod_php运行的。只能有一个PHP进程一个线程。以fastcgi方式运行可以设置多线程提高并发量。
先来看看以mod_php方式的并发如何:
用ab发送2000个并发10万个请求
每秒处理3千多,大量请求延迟超过800ms。
现在这种方式开启PHP-FPM看是否有改善
配置PHP_FPM
cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf
-
编辑php-fpm.conf
- pid=run/php-fpm.pid
- 在Ubuntu16.04中nobody默认的用户组是nogroup
- 将php-fpm.conf里面的 group=nobody 改为 group=nogroup 修改httpd.conf
-
将所有的php请求都通过fastcgi处理
注释掉的是旧的
- 开启mod_proxy.so 跟 mod_proxy_fcgi.so
- 注释掉 php5_module
重启Apache。
必须要先 stop 再 start。
service apache2 stop
service apache2 start
启动php-fpm
/usr/local/php5/sbin/pph-fpm
查看phpinfo与之前相比
少了Apache2handler
多了cgi-fcgi
此时同样已2000的并发,10万个请求试试性能
性能似乎变得更低了?
再看TIME_WATE
请求的等待数又飙升了。
Apache的日志出现大量的链接错误
vi /usr/local/apache/logs/test.tt-error_log
修改php-fpm.conf;
设置启动的PHP-FPM进程数
一般PHP-fpm进程占用内存随着时间会慢慢增大,一般20-30M,所以进程数就用2000M/30M = 67
重启php-fpm;
kill -INT `cat /usr/local/php5/var/run/php-fpm.pid`
/usr/local/php5/sbin/php-fpm
再次测试2000个并发,10W个请求
每秒处理能力达到了2K多了。
继续优化
打开PHPopcache加速器
vi /usr/local/php5/etc/php.ini
修改如下配置
重启PHP-FPM;
可以看到phpinfo中
再次2000的并发,10W个请求
此时已经达到了3K多
上一篇我们的并发已经达到510个并发,25500个请求。
此时能够达到520个并发,26000个请求。
最后我们切换php为Apache的mod_php方式,查看并发的对比。
同样的配置,运行方式的不同
用ab发送2000个并发10W个请求
每秒的请求达到了4K多。
说明在以Apache mod_php方式运行的承载能力较强。