500,501,502,503,504,505 服务器常见错误

500 Internal Server Error (检查你的代码吧)

顾名思义500错误一般是服务器遇到意外情况,而无法完成请求;
一般解决思路:查看nginx、php的错误日志文件
500 错误的可能原因:

  • a、编程语言语法错误,脚本错误
  • b、并发高时,因为系统资源限制,不能打开过多的文件描述符(fd)

502:简单点说,处理当前 nginx 请求的 php(进程OR服务器) 已经挂掉了;
nginx 在这里充当的是反向代理服务器的角色,是把http协议请求转成 fastcgi 协议的请求,通过 fastcgi_pass 指令传递给 php-fpm 进程,当nginx执行请求时,却收到了上游服务器( php-fpm)的无效响应,响应内容是nginx无法理解的,就会返回502 bad gateway;可以尝试刷新缓存(ob_flush);

503:简单点说,用户请求数(并发)过大;
当前请求用户量太多,服务器为了保护自己不挂掉,机智的拒绝了某些用户的访问,这些用户就会收到503这个错误(部分用户可正常访问);
因为一个 http 请求会占用一个 php-fpm 进程,瞬时请求量过大时,没有足够的 php-fpm 进程来处理请求,就会返回 503 service unavailable;
常见原因:

1、站点遭到攻击,在超过限制时报503错误,待攻击停止就可以恢复了;
2、站点规模较大,并发请求过多,这种建议修改优化程序或需要升级更高类型主机;
3、程序有错误,在短时间内产生多次工作进程崩溃,会因IIS7的快速故障防护功能而关闭程序池;
4、站点提供下载,当带宽超过限制时会报错,需停止下载功能,或者升级主机解决。

504:简单点说,请求超时,页面等了半天也没打开,返回504
一般而言,504很少会遇到,通常是由 nginx 配置不当引起;
也可能是脚本逻辑没考虑特例情况,比如 SQL 执行时间太久;
专业点儿说就是,单个 php-fpm 进程阻塞超过 nginx 的时间阈值,会返回 504 gateway timeout,例如,PHP脚本执行时间太长,此时可查看是否某些代码逻辑产生了阻塞;
比如你的 nginx 超时时间设为300,但你的请求响应时间为500,超过了300的阈值,就会看到504;

以下两种状态极少遇到

501
服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码;
505
服务器不支持请求中所用的 HTTP 协议版本(HTTP 版本不受支持);