美文网首页
Nginx应用实践第一节 504

Nginx应用实践第一节 504

作者: needrunning | 来源:发表于2019-05-08 00:43 被阅读0次

梳理一些服务器Nginx相关的工作场景

技术背景

LNMP环境下,反向代理服务器 Nginx 错误日志大量报错,显示504

nginx504.png

upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while reading response header from upstream

理论回看

Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI

一般情况下,提交动态请求的时候,Nginx会直接把 请求转交给php-fpm,而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,最后由 Nginx 把结果反馈给客户端浏览器。

原因列举如下
1 作为调用方,服务提供方接口异常,造成访问超时,Nginx交由 PHP 处理的任务长时间没有返回,Nginx直接返回504。而这种超时,在PHP调用层面的的代码逻辑里很难捕获到,并且习惯上也不捕获,交由框架层面的异常捕获器。
2 作为服务提供者,自身服务访问数据库超时不返回或者PHP层面业务处理严重耗时,程序设计不合理,造成长时间延迟超时。

fastcgi进程

问题追踪

如果PHP服务出现短时间大量504错误,会把整个fastcgi通道拥塞堵死。最后就是PHP服务挂了。如果多个服务以虚拟主机的形式在同一台服务器上,那么这多个服务都会受到影响,最直观的前台体验就是访问速度慢,或者直接打不开。

定时任务,跑批,数据库批量数据更新相关业务容易出这种类型的 Nginx 错误。

网络上通过配置解决504的方式,正常情况下不建议使用,优先考虑程序设计和实现方面的不足,参照我之前的一篇博文 PHP性能优化之连接超时

温习下Nginx 中的常用命令

检查配置文件

 ./nginx  -t;
nginx: the configuration file /etc/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/conf/nginx.conf test is successful

检查版本

 ./nginx  -v;
nginx version: nginx/1.15.2

检查模块

 ./nginx  -V;

nginx version: nginx/1.15.2
built by clang 9.1.0 (clang-902.0.39.2)
built with OpenSSL 1.0.2o  27 Mar 2018 (running with OpenSSL 1.0.2r  26 Feb 2019)
TLS SNI support enabled ...

故障排查通用思路

排查与Nginx服务相关的故障时从以下几个方面检查

  • user
  • error_log
  • pid
  • access_log

相关文章

网友评论

      本文标题:Nginx应用实践第一节 504

      本文链接:https://www.haomeiwen.com/subject/drqpoqtx.html