美文网首页
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