侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

使用php + nginx环境调试时遇到网关错误的解决流程步骤

技术  /  管理员 发布于 1年前   660

当你调试时有时会遇到网关错误,通常是 502 Bad Gateway 或 504 Gateway Timeout。

当 Nginx 向 PHP 发送请求,但 PHP 返回错误信息说无法处理请求时,Nginx 就会返回这些错误。

通常情况下,这些错误不是应用程序中发生的错误,而是(通常)在应用程序处理请求之前发生的错误。


什么是网关

网关是位于网络服务器(通常是 Nginx)和应用程序之间的东西。

对于大多数人来说,这就是 PHP-FPM。

Nginx 会使用 fastcgi 协议将网络请求转换为 PHP-FPM 可以理解的内容。

然后,PHP-FPM 运行应用程序,用它需要的信息设置 PHP(设置超全局 $_GET、$_POST、$_SESSION、$_SERVER 等)。


如果 PHP-FPM 返回错误,Nginx 会给出网关错误。


网关错误

当 PHP-FPM 返回错误时,会返回 Bad Gateway。

通常是以下情况之一

PHP-FPM 未运行(可能是由于错误太多)
PHP-FPM 已达到其 max_children 限制,无法处理更多请求
某种 PHP 错误,如 segfault


网关超时

网关超时错误通常发生在应用程序处理过多流量时。这可能与 PHP-FPM 的 max_children 错误(配置处理的请求过多)相对应,但主要发生在数据库超载,无法处理更多查询连接时。返回查询需要花费太多时间。

如果应用程序的任何网络连接没有及时返回响应,也会出现这种情况,但数据库是最常见的瓶颈。


调试网关错误

调试网关错误的关键是日志。我从网络请求堆栈的顶层开始向下检查。这意味着我检查日志的顺序是

Nginx
PHP-FPM
服务器资源使用情况
应用程序日志


Nginx 日志中的数据通常最无用,尽管它可能会提示 PHP-FPM 未运行的问题(如果它找不到 PHP-FPM 的套接字文件,例如 /var/run/php-fpm.sock)。


FPM 日志通常是最有用的,因为 PHP-FPM 是返回错误的网关!

通常你会看到一个关于达到(或接近)max_children 限制的错误。

比较少见的是设置错误(setfault)(如果出现这种情况,可能是代码中出现了递归)。


接下来我会检查服务器资源使用情况。

你可以使用 htop 或类似软件来检查 CPU/RAM 的使用情况,以及哪些进程在使用它们。

你还应该通过 df -h 检查磁盘使用情况,看看磁盘空间是否用完。


Inodes 也可能用完!Inodes 是 "索引节点",用来跟踪 Linux 系统中文件的使用情况。

因为所有东西都是文件(包括 Linux 如何处理打开的网络连接!),所以 Inodes 用完可能是个问题。

你可以运行 df -i 查看每个磁盘驱动器的索引节点使用情况。


最后,我会检查应用程序日志。

这些日志可能会显示与超时或数据库错误有关的错误,但有时问题并不是应用程序代码库特有的。

这些日志对网关错误的有用程度各不相同。


  • 上一条:
    PHP max()函数浅析
    下一条:
    在laravel框架中实现缩短应用程序中的URL扩展包推荐:Cuttly
  • 昵称:

    邮箱:

    1条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客