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错误的原因,根据系统日志逐一排查即可