NGINX+PHP 架构中 502、504报错总结

NGINX+PHP 架构中 502、504报错总结

前言

生产环境下网站Nginx常常遇到502,504报错,502  Bad Gateway 报错极有可能是后端的php或者tomcat的问题,而504报错主要是由于nginx和php之前的超时。还是那句话,出了问题不要乱猜,不要像无头苍蝇一样大范围搜查,要学会看日志!下面我和大家学习下502,504的排错方法于总结。

准备

  • 对与运维而言排错的过程极其紧张,你的思维能力至少会比平时低20%,所以自己要在排错过程中逐渐挑战自己的心理素质,着急是没用的,冷静下来。
  • 对于排错就像治病一样,也需要望闻问切,出现任何问题一定是有他的原因的,你要和开发沟通,是跑了什么脚本导致服务器资源不足?还是不小心删除了什么?或者说修改了什么配置?千万不要小看这个细节,这会让你的排错更加顺利。为你排错指明方向。
  • 另外一定要结合日志去分析,而且要有发散性思维,因为很多服务都有连带关系,可能并不是他本身的问题,而是其他服务出现问题间接影响了它,这时候你就需要结和他相关的服务的日志去分析。比如502也有可能是数据库出现了问题。
  • 学会把握已知信息缩小排错范围,比如说502报错中,如果你php配置的是sock模式,但是你nginx配置的是tcp监听,那么就会报502错误,但是这个错误仅限你搭建时候发生。一个已经成功运行的网站,在你没有故意修改的话,那是不可能发生的。

502错误

502错误需要判断是所有页面都无法访问,还是仅有小部分。是一直502,还是偶尔502过一段时间又恢复。

1.php是否在运行?进程是否存在?查看下php-fpm的日志,也可以访问下info.php看看是否可以解析php文件,确保Php功能是否正常,如果正常那可能不是Php的问题,需要看看数据库或者其他关联组件。

2. 防火墙,安全组,端口的问题,导致fast-cgi 不能和php通信 从而报502错误,可以用telnet排查

3.nginx配置php的通信方式于php实际通信方式不匹配。比如nginx配置sock连接,实际php是tcp监听

4.php脚本执行超时,因为某些参数,php-fpm终止了脚本以及该脚本的work进程。(小范围502)

 

 

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...