通过route访问Openshift上的HTTP request报错504 Gateway Time-out【已解决】

现象:

数据量过多的时候,HTTP请求大概30秒后会报错

复制代码
<html>

<body>
    <h1>504 Gateway Time-out</h1>
    The server didn't respond in time.
</body>

</html>

解决思路

分析访问链路:

客户端发起请求 -> Haproxy -> Route -> Service -> Pod(nginx)

1.修改haproxy配置

在 HAProxy 配置文件(例如 /etc/haproxy/haproxy.cfg)的前端和后端部分添加或修改以下内容:

cfg 复制代码
defaults
  mode                    http
  log                     global
  option                  dontlognull
  option http-server-close
  option                  redispatch
  retries                 3
  timeout http-request    10s
  timeout queue           1m
  timeout connect         10s
  timeout client          1m
  timeout server          1m
  timeout http-keep-alive 10s
  timeout check           10s
  maxconn                 3000

改成

cfg 复制代码
defaults
  mode                    http
  log                     global
  option                  dontlognull
  option http-server-close
  option                  redispatch
  retries                 3
  timeout http-request    300s
  timeout queue           300s
  timeout connect         300s
  timeout client          300s
  timeout server          300s
  timeout http-keep-alive 300s
  timeout check           300s
  maxconn                 3000

配置完成后重启 HAProxy:

bash 复制代码
sudo systemctl restart haproxy

2.修改路由超时时间

bash 复制代码
oc annotate route <route-name> haproxy.router.openshift.io/timeout=<timeout-value>,如 300s

或者在route yaml加入

yaml 复制代码
annotations:
  haproxy.router.openshift.io/timeout: 600s

3.修改nginx配置

在 Nginx 配置文件(例如 /etc/nginx/nginx.conf 或特定站点配置文件)中添加或修改以下内容:

conf 复制代码
http {
    server {
        ...
        location / {
		    keepalive_timeout   300;
		    fastcgi_connect_timeout 300;
		    #fastcgi连接超时时间,默认60秒
		    fastcgi_send_timeout 300;
		    #nginx 进程向 fastcgi 进程发送请求过程的超时时间,默认值60秒
		    fastcgi_read_timeout 300;
		    proxy_connect_timeout       300;
		    proxy_send_timeout          300;
		    proxy_read_timeout          300;
		    send_timeout                300;
        }
    }
}

配置完成后重启 Nginx:

bash 复制代码
sudo systemctl restart nginx

在此验证,发现问题已经解决!!!

相关推荐
yanlou2339 小时前
[C++/Linux HTTP项目] HTTP服务器基于muduo高性能服务器搭载【深入详解】
运维·服务器·http·muduo库·http高性能服务器
Ares-Wang10 小时前
网络》》BGP Border Gateway Protocol,边界网关协议
网络·gateway
不许哈哈哈11 小时前
HTTP协议基础(运维开发面试版)
http·面试·运维开发
王锋(oxwangfeng)11 小时前
Nginx 四层 TCP 与七层 HTTP 转发实战指南
tcp/ip·nginx·http
码农水水12 小时前
传音Java面试被问:HTTP/2的多路复用和头部压缩实现
java·开发语言·spring boot·后端·http·面试·职场和发展
她说..13 小时前
Java Web 开发:请求头、请求体、响应体 数据获取全攻略(附实战示例)
java·开发语言·spring boot·spring·http·spring mvc
奋斗者1号13 小时前
【MCP深度解析】Stdio vs SSE vs Streamable HTTP:三大通信机制全景对比与选型指南
网络·网络协议·http
宁雨桥13 小时前
HTTP 协议全景解析:无状态、明文与安全演进之路
网络协议·安全·http
zhaotiannuo_19981 天前
渗透测试之HTTP\HTTPS协议和BP抓包
网络协议·http·https
zzu123zsw1 天前
Chisel 实战指南:一条命令打通 HTTP 隧道
网络·网络协议·http