美文网首页
网站报“Nginx 502 bad gateway”错误的解决方

网站报“Nginx 502 bad gateway”错误的解决方

作者: 响呼雷 | 来源:发表于2022-06-30 11:05 被阅读0次

    问题描述

    “Nginx 502 Bad Gateway”错误的含义是请求的PHP-CGI已经执行,但是由于读取资源问题等原因没有执行完毕,而导致PHP-CGI进程终止,一般来说“Nginx 502 Bad Gateway”错误和php-fpm.conf的设置有关。

    问题原因

    常见的原因可能是php-cgi进程数不够用、MySQL语句执行慢导致PHP执行时间长、或者是php-cgi进程异常中断,都会出现502错误。

    解决方案

    针对不同的问题原因,提供以下不同的解决方法。当磁盘空间不足时,可以执行df -h命令,查看磁盘使用量。

    • 在Nginx安装后可正常访问网站的环境中,运行一段时间出现502错误码,一般默认php-cgi进程是5个,可能因为php-cgi进程不够用而造成502错误,需要修改/usr/local/php/etc/php-fpm.conf文件,将其中的max_children值适当增加。

    • PHP执行超时,修改/usr/local/php/etc/php.ini文件,将max_execution_time改为300。

    通常的排查方法如下。

    1.依次执如下命令,查看php fastcgi的进程数,及max_children的值。

    netstat -anpo | grep php-fpm | wc -l

    2.执行如下命令,查看当前进程。

    ps aux | grep php-fpm

    修改/usr/local/php/etc/php-fpm.conf配置文件中的相关参数,将pm.max_children参数的值修改为5,将request_terminate_timeout参数的值修改为60。

    3.修改/usr/local/php/etc/php-fpm.conf配置文件中的相关参数,将pm.max_children参数的值修改为5,将request_terminate_timeout参数的值修改为60。

    说明:

    • max_children最多5个进程,按照每个进程20MB内存,最多100MB。也就是1分钟。max_children增多,则php-cgi的进程增多就会处理的很快,排队的请求就会很少。但是设置max_children也需要根据服务器的性能进行设定,一台服务器正常情况下,每一个php-cgi进程所耗费的内存在20M左右。根据购买的服务器内存来实际决定。
    • request_terminate_timeout执行的时间为60秒,request_terminate_timeout值可以根据服务器的性能进行设定。一般来说性能越好您可以设置越高,20分钟~30分钟都可以。
    4.部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,内容类似如下。

    原文链接:网站报“Nginx 502 bad gateway”错误的解决方法

    相关文章

      网友评论

          本文标题:网站报“Nginx 502 bad gateway”错误的解决方

          本文链接:https://www.haomeiwen.com/subject/bajfbrtx.html