nginx 502 bad gateway问题怎么解决


本文摘自PHP中文网,作者步履不停,侵删。

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

常见的原因可能是php-cgi进程数不够用、php执行时间长(mysql慢)、或者是php-cgi进程死掉,都会出现502错误。

1. 在安装好的环境中,运行一段时间出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。

2. php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300

3. 磁盘空间不足,可以使用 # df -h命令查看磁盘使用量

4. php-cgi进程死掉了。

通常的排查方法如下:

1、查看php fastcgi的进程数(max_children值)

1

2

# netstat -anop | grep php-cgi | wc -l

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

假如显示是5

2、查看当前进程

1

# ps aux | grep php-fpm 观察fastcgi/php-fpm进程数,假如使用的进程数等于或高于5个,说明需要增加。

3、调整/usr/local/php/etc/php-fpm.conf 的相关设置

1

2

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时间,例如:

1

2

3

4

5

6

7

http

{

......

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

......}

更多Nginx相关技术文章,请访问Nginx教程栏目进行学习!

以上就是nginx 502 bad gateway问题怎么解决的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

nginx可以集群吗

centos7环境下如何安装nginx

多个nginx集群怎么工作

nginx常见错误及解决方法介绍

nginx的三种反向代理方式你都知道么

linux教程之nginx的并发连接数和连接状态查询

nginx配置文件在哪个目录下

什么是nginx负载均衡

nginx的正确卸载方法

nginx是如何处理http请求的

更多相关阅读请进入《nginx》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...