504网关超时?别慌!完整排查思路来了

admin 2026-05-02 05:18:35 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细解析504网关超时错误的完整排查流程,从确认问题现象到检查网关层、网络层、应用服务器、系统资源和后端服务的五步排查法。提供具体命令和配置调整建议,指出应用代码慢占50%为主要原因,强调先定位根因再调整超时时间的原则。 综合评分: 85 文章分类: 解决方案,技术标准,运维安全,应用安全,云安全


cover_image

504 网关超时?别慌!完整排查思路来了

原创

刘军军 刘军军

运维星火燎原

2026年5月2日 00:01 山西

在小说阅读器读本章

去阅读

01

504是什么?

504 Gateway Timeout:网关/代理服务器在等待上游服务器响应时超时了。

简单说:Nginx 等了很久,应用服务器没反应,所以报 504。

02

完整排查思路(从外到内)

第一步:确认问题现象

# 1. 直接访问应用服务器(绕过网关),看是不是正常
curl http://应用服务器IP:端口/路径

# 2. 访问网关,看是不是确实 504
curl -I http://你的域名/路径 # 看 HTTP 状态码

判断

  • 直接访问应用正常 → 问题在网关或网关到应用的网络
  • 直接访问应用也慢 → 问题在应用或后端

第二步:检查网关层(Nginx)

  1. 查看 Nginx 错误日志
# 看 Nginx 错误日志(通常在 /var/log/nginx/error.log)
tail -f /var/log/nginx/error.log

# 常见错误信息
# upstream timed out (110: Connection timed out) while reading response header from upstream
  1. 检查 Nginx 超时配置
# 查看 Nginx 配置
vim /etc/nginx/nginx.conf
# 或
vim /etc/nginx/conf.d/你的配置.conf

# 相关配置项
proxy_connect_timeout 60s; # 连接上游超时
proxy_send_timeout 60s; # 发送请求超时
proxy_read_timeout 60s; # 读取响应超时(最常见!)

临时调整:如果确认是超时时间太短,可以调大(指标不治本,建议先找根因)

# 重新加载 Nginx
nginx -t && nginx -s reload

第三步:检查网络层

  1. 从网关服务器 ping 应用服务器
# 在网关服务器上执行
ping 应用服务器IP

# 看延迟和丢包率
# 延迟高/丢包 → 网络问题

2. telnet 测试端口连通性

# 从网关服务器测试
telnet 应用服务器IP 端口
# 或
nc -zv 应用服务器IP 端口

# 结果
# Connected → 连通正常
# Connection refused → 端口没开或防火墙
# 超时 → 网络问题
  1. traceroute/mtr 排查路径
# 看网络路径
traceroute -n 应用服务器IP

# 持续监控网络质量(推荐)
mtr -n 应用服务器IP

第四步:检查应用服务器

  1. 看应用进程是否还在
# 看应用进程
ps -ef | grep 你的应用名

# 看端口是否在监听
netstat -tlnp | grep 端口
# 或
ss -tlnp | grep 端口
  1. 看应用日志
# 看应用日志(路径根据你的实际情况)
tail -f /path/to/你的应用.log

# 找关键词
# ERROR / Exception / Timeout / 死锁 / 数据库连接失败
  1. 看应用响应时间
# 直接在应用服务器上测试
time curl http://127.0.0.1:端口/路径

# 如果这里就很慢 → 应用本身慢

第五步:检查系统资源(应用服务器)

  1. 看 CPU
top
# 或
htop

# 看 CPU 使用率
# load average > CPU 核数 → CPU 忙

2. 看内存

free -h

# 重点看 available
# available 小 → 内存不足

3. 看磁盘 I/O

# 看磁盘使用率
df -h

# 看磁盘 I/O 情况
iostat -x 1

# %util 接近 100% → 磁盘瓶颈
  1. 看网络连接
# 看连接数
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

# 看是否有 CLOSE_WAIT/TIME_WAIT 过多

第六步:检查后端(数据库/中间件)

1. 数据库

# 看数据库连接数
show processlist;

# 看慢查询
# MySQL
show variables like 'slow_query%';
# PostgreSQL
select * from pg_stat_activity where state = 'active';

# 测试数据库查询速度
time mysql -e "select * from 你的表 limit 1"

2. 中间件(Redis/MQ等)

# Redis
redis-cli info stats

# 看响应时间
time redis-cli ping

03

常见原因总结

| 原因 | 占比 | 排查点 | | — | — | — | | 应用代码慢 | 50% | 慢查询、死循环、锁等待 | | 数据库慢 | 20% | 慢 SQL、锁、连接池耗尽 | | 网络问题 | 15% | 丢包、延迟高、防火墙 | | 网关超时设置短 | 10% | proxy_read_timeout 太小 | | 资源耗尽 | 5% | CPU/内存/磁盘满 |

04

快速排查

#

# 1. 先确认问题(必做)
curl -I http://你的域名/路径 # 看是不是 504
curl http://应用服务器IP/路径 # 绕过网关测试

# 2. 看网关日志(必做)
tail -f /var/log/nginx/error.log

# 3. 看应用日志(必做)
tail -f /path/to/应用.log

# 4. 看系统资源(必做)
top
free -h
iostat -x 1

# 5. 看网络(怀疑网络时)
ping 应用服务器IP
mtr -n 应用服务器IP

504 = 网关等不及应用响应了

  • 先绕过网关测试,定位是网关还是应用问题
  • 优先看应用日志和慢查询
  • 最后再调大网关超时时间(指标不治本)

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:运维星火燎原 刘军军 刘军军《504 网关超时?别慌!完整排查思路来了》

五一劳动节快乐! 网络安全文章

五一劳动节快乐!

文章总结: 该文档为360漏洞云于2026年5月1日发布的劳动节主题内容,包含节日祝福语和图片展示,但未提供具体技术分析或安全相关实质性信息。文档主体为节庆问候
评论:0   参与:  0