• nginx502与504


    502与504释义:

    502 bad gateway 顾名思义 网关错误 后端服务器tomcat或php没有起来,应用服务的问题(前提是接入层7层正常的情况下)。

    应用服务问题一种是应用本身问题;另一种是因为依赖服务问题比如依赖服务RT高,依赖的服务有大的读取(mysql慢查,http等),以至于调用方超过超时read时间;服务集群压力大时,也会出现502超时(502理解为不可响应或响应不过来,其实还是不可响应)。

    504 gateway time-out 顾名思义 网关超时 一般计算机中的超时就是配置错了,此处一般指nginx做反向代理服务器时,所连接的服务器tomcat无响应导致的。

    从网络角度,502已经与后端建立了连接,但超时;504与后端连接未建立,超时。

    5打头的http回复码表示服务端出了问题,php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误,有可能是nginx的问题,也可能是后端php的问题

    排查思路:

    1、必现502,应用“挂了”
    2、偶现502,资源不足,mysql连不上,等等,大都是资源不足的问题

    排查逻辑:

    Nginx通过配置fastcgi模块来提供对php支持

    Nginx的问题:

    1. 可能php的执行时间比较长,超过了nginx的等待时间,把nginx默认的等待时间调长

    fastcgi_connect_timeout 300;(默认60,不能超过75)

    fastcgi_send_timeout 300; (默认60)

    fastcgi_read_timeout 300; (默认60)

    phpfpm的问题:/usr/local/php/etc/php-fpm.conf:

    1.    php有没有启动

    1. 2.      可以查看FastCGI进程数的配置与实际grep php-cgi出的进程数,相近的话,可以将FastCGI的进程数量调大

    修改php配置文件中pm.max_children 默认10,改成30

    1. 3.      或者修改php配置文件中pm.max_requests的值,它表示每个CGI进程可以响应的请求数。
    2. 尝试增大php缓存区的大小,因为它默认是8k,可以改成128k

    fastcgi_buffers 8 128k

    补充:   如果nginx访问量突然增大的话,也会出现504的错误,因为nginx每秒回应的请求是有限制的,如果超过的话,只会对部分请求做出回复,这个可以过滤nginx日志中ip的请求数来判断是否被攻击。

  • 相关阅读:
    谈Vite在Electron环境下吃花卷拉馒头的现象
    公司只提供签名服务,不提供证书文件,如何打包Electron应用
    vue3微前端架构——基于蚂蚁qiankun框架
    Vite ❤ Electron——基于Vite搭建Electron+Vue3的开发环境【一】
    dotnet core 高CPU lldb篇
    Openshift入门(转)
    使用 dotnet test 和 xUnit 在 .NET Core 中进行 C# 单元测试
    ASP.NET Core 中的单元测试控制器逻辑
    ASP.NET Core 中间件
    Precise Computation of CLR Object Size
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/13847924.html
Copyright © 2020-2023  润新知