Nginx返回502错误提示问题原因常用解决方法
作者:mmseoamin日期:2024-03-20

Nginx返回502错误提示问题原因和常用解决方法

1. 因网站的访问量大,而php-cgi的进程数偏少,导致nginx 返回502错误

解决方法:针对这种情况的502错误,需增加php-cgi的进程数。

一般一个php-cgi进程占20M内存,你可以自己计算下,适量增多max_children值

查看PHP当前fastcgi进程个数命令如下:

netstat -anpo | grep "php-cgi" | wc -l

具体就是修改/usr/local/php/etc/php-fpm.conf 文件配置

参考说明及调整如下

#php-fpm.conf配置文件参数优化选项。

pm.max_children = 1024      #子进程最大数

pm.start_servers = 10        #启动时的进程数 

#保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程

pm.min_spare_servers = 5     

#保证空闲进程数最大值,如果空闲进程大于此值,则进行清理

pm.max_spare_servers = 20

#进程的超时时间

pm.process_idle_timeout = 15s 

#设置每个子进程处理的最大请求数

pm.max_requests = 1000

#设置文件打开描述符的rlimit限制

rlimit_files = 1024

#当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off'

request_slowlog_timeout = 10s

#慢请求的记录日志,配合request_slowlog_timeout使用

slowlog = log/$pool.log.slow

2. CPU占用率及内存占用率非常高,遭到CC攻击

解决方法:可以使用CDN加速产品或高防服务器来专业防护CC

3. CPU占用率不高,内存溢出了

检查一下网站程序有没有问题?

检查一下/var/log/目录下的日志,看看是不是有人爆破SSH和FTP端口?

SSH、FTP遭到穷举也会占用大量内存

根据错误日志排查

......

总结

fastcgi进程数不够用

php执行时间长

php-cgi进程死掉

nginx 头部请求太大

是可能造成nginx经常返回502错误的原因,根据系统日志逐一排查即可