Http 500等错误码意义及解决方案

Http 500 501 502 503 504 504分别是什么意思,如何排查?

author: he xiaodong date: 2019-04-03

通用原则是打印日志,查看日志,对症下药

状态码意义

Http 状态码意义

500 错误排查

可能原因:
1.编程语言语法错误,web脚本错误
2.并发高时,因为系统资源限制,而不能打开过多的文件
3.项目涉及到读写文件时,权限不足而抛出错误

解决思路:
1.查看 nginx、php 的错误日志文件,基本能确定情况,自定义日志同时错误偶发的时候,可以将客户请求数据等一起打印,方便复现问题
2.如果是 too many open files,修改 nginx 的 worker_rlimit_nofile 参数,使用 ulimit 查看系统打开文件限制,修改 /etc/security/limits.conf ,还是出现 too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了
3.读写文件涉及到权限问题就授权就行,一般是忘记授权导致的,小问题
4.如果是脚本的问题,则需要修复脚本错误,优化代码

501 错误排查

服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。常见原因是一些较旧版本的 nginx 不支持新增请求方式,升级或者修改一下配置即可。

503 错误排查

可能原因:服务器没有准备好处理请求。常见原因是服务器因维护或重载而停机。

解决思路:
1.查看 nginx 日志,检查是否并发数量太大,服务器无法处理请求,出了手动处理维护服务器,请求过多而无法即时处理是最大的原因
2.通过网络抓包,检查网站是否是设置了单 ip 请求频率限制,一般多发于设置了请求频率,同时静态文件在同一个域名下,相当于多次请求,触发频率限制。

502、504错误排查 

可能原因:web 服务器故障、程序进程不够

解决思路:
1.使用nginx代理,而后端服务器发生故障;或 者php-cgi 进程数不够用;ph 执行时间长,或者是 php-cgi 进程死掉;以及 fastCGI 使用情况等都会导致 502、504 错误。
2.502 是指请求的 php-fpm 已经执行,但是由于某种原因而没有执行完毕,最终导致php-fpm 进程终止。一般来说,与 php-fpm.conf 的设置有关,也与 php 的执行程序性能有关,网站的访问量大,而 php-cgi 的进程数偏少。针对这种情况的502错误,只需增加 php-cgi 的进程数。具体就是修改 /usr/local/php/etc/php-fpm.conf 文件,将其中的 max_children 值适当增加。这个数据要依据你的服务器的配置进行设置。一般一个 php-cgi 进程占 20M 内存,你可以自己计算下,适量增多。然后执行 /usr/local/php/sbin/php-fpm reload 重启一下。
3.504 表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的 php-fpm。与 nginx.conf 的配置也有关系。

参考链接:

  1. Mozilla http状态码文档