环境说明
压测工具:apache/ab
web服务器:NGINX/1.8.0 + PHP 5.6.25
php脚本:get.php
注:
nignx 设置超时
fastcgi_connect_timeout 60
fastcgi_send_timeout 60
fastcgi_read_timeout 60
php-fpm 设置超时
request_terminate_timeout 10
压测开始
1.get.php源码
<?php
for ($i=0; $i < 50; $i++) {
# code...
sleep(1);
}
2.使用ab模拟10个client对get.php并发请求100次
ab -c 10 -n 100 http://time-out.com/get.php
结果分析
情况一:每个php执行50s以上远大于超时时间(10s),fpm会自动发送kill信号(SIGTERM)给工作进程clild进程关闭。此时nginx与php-fpm的连接断开,nginx找不到对方,报502 Bad Gateway错误。
如图:fpm超时的处理 (php-fpm.conf)