返回
NGINX 504 网关超时故障的排查技巧
后端
2023-10-10 09:55:52
前言
在实际工作中,我们经常会遇到各种各样的服务器故障。其中,NGINX 504 网关超时故障是一个比较常见的故障。本文将分享一个真实案例,详细介绍如何排查和解决 NGINX 504 网关超时故障。
故障现象
某天早上,我们收到用户反馈,说他们访问网站时遇到了 504 网关超时错误。我们立即对服务器进行检查,发现 NGINX 日志中出现了大量的 504 错误。
[error] 10.0.0.1 - - [27/Apr/2023:10:10:09 +0800] "GET /index.html HTTP/1.1" 504 184 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
[error] 10.0.0.2 - - [27/Apr/2023:10:10:09 +0800] "GET /about.html HTTP/1.1" 504 184 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
故障排查
1. 检查 NGINX 配置文件
我们首先检查了 NGINX 配置文件,发现没有明显的错误。
server {
listen 80;
server_name www.example.com;
location / {
root /var/www/html;
index index.html;
}
}
2. 检查后端服务器
我们然后检查了后端服务器,发现后端服务器的负载很高,并且有大量的请求超时。
[root@web1 ~]# sar -u 1 10
Linux 5.10.0-1022-aws (web1.example.com) 04/27/2023 _x86_64_ (4 CPU)
10:10:01 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:10:02 AM all 99.49 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.51
10:10:03 AM all 99.46 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.54
10:10:04 AM all 99.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.50
10:10:05 AM all 99.49 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.51
10:10:06 AM all 99.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.50
Average: all 99.49 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.51
3. 调整 NGINX 配置
我们对 NGINX 配置文件进行了调整,增加了 proxy_connect_timeout
和 proxy_send_timeout
的值。
server {
listen 80;
server_name www.example.com;
location / {
root /var/www/html;
index index.html;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
}
}
4. 重新启动 NGINX
我们重新启动了 NGINX,故障消失。
总结
通过这次故障,我们吸取了以下几点经验:
- 定期检查 NGINX 配置文件,确保没有明显的错误。
- 定期检查后端服务器的负载情况,避免出现负载过高的情况。
- 适当调整 NGINX 配置,优化 NGINX 的性能。