很多新手刚开始做网站可能感觉不到502,504的问题,当等你网站到达了一定水平的时候,流量起来的时候,你会发现经常会遇到502、504类似的问题。

[root@localhost /]# vim nginx.confserver {        listen 80;
        server_name zabbix.gree.com;
        access_log /roobo/logs/nginx/zabbix.gree.com_access.log main;
        error_log /roobo/logs/nginx/zabbix.gree.com_error.log error ;
        root /roobo/webserver/zabbix;        index index.html index.htm index.php;
 
        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }
        location ~ \.php$ {
            try_files $uri =404;
            include fastcgi.conf;
            fastcgi_pass 10.7.19.195:9000;
        }
 
       #error Connection timed out and 504 error
       large_client_header_buffers 4 16k;
       client_max_body_size 30m;
       client_body_buffer_size 128k;
       fastcgi_connect_timeout 300;
       fastcgi_read_timeout 300;
       fastcgi_send_timeout 300;
       fastcgi_buffer_size 64k;
       fastcgi_buffers   4 32k;
       fastcgi_busy_buffers_size 64k;
       fastcgi_temp_file_write_size 64k;
}

经过测试,并没有任何效果。

2、我又自信的以为是我用了FirewallD防火墙的原因,结果我关闭它,测试也没有效果,照样报504错误。

3、最后当再出现504错误的时候,我直接暴力操作,杀死php-fpm,再重启,就可以恢复正常,从而我判断是php的问题。经过我的排查,发现是“pm.max_requests”这个参数的问题,我最初设置的是204000,现在设置的是20400即可恢复正常,没有再出现504错误了,平均负载 Load Average也在正常的范围类。

4、但是过一段时间后,又会出现“504连接超时”这个问题。

5、最终,经过我几天的测试,我最终php-fpm.conf参数调整如下即恢复正常:

注意:这里我顺便说一下,我以前配置的参数是 pm.max_spare_servers = 60; pm.max_requests = 204800;

pm = dynamic
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 30
pm.max_requests = 20480

总结:

通俗点讲,设置“pm.max_requests”参数小一点,就是让php-fpm能够自动的频繁重启,关于具体设置多大?要根据你的服务器配置以及流量状况来分析,自己可以去做测试。

经过我的的测试,我发现pm.max_requests设置太大会出现504 Gateway Time-out,pm.max_requests设置太小,平均负载 Load Average又会超出正常值的范围,甚至更高。

点赞(1) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部