提问人:codingenious 提问时间:10/11/2023 最后编辑:codingenious 更新时间:10/11/2023 访问量:24
Haproxy - 浏览器通信,请求正在循环
Haproxy - Browser communication, request are looping
问:
我的服务器上有一个使用 haproxy 的日志收集服务。所有来自外部的请求都通过haproxy提供。
当我从 curl/postman 调用日志收集服务时,所有服务的日志收集都在后端进行,并在客户端计算机上下载 zip。
即使对于 30 GB 文件,使用 curl/postman 时也会发生这种情况。在这种情况下,日志收集可能需要 15-20 分钟。
但是当使用浏览器时,操作会进入循环行为,即 haproxy 不断从客户端获取新请求,而旧请求haproxy_termination_state:CD。尽管“网络”选项卡不会显示任何进入服务器的新请求,并且永远处于“挂起”状态。
{
"app": "haproxy",
"content_type": "-",
"dst_connect_time": "2",
"dst_ip": "x.x.x.32",
"dst_port": "8090",
"dst_response_time": "1126057",
"duration": "1126059",
"haproxy_backend": "x_read",
"haproxy_termination_state": "CD",
"host": "x",
"http_status": "200",
"msg": "200 GET /x/api/v1/logs?minTime=2023-10-03T03:30:03.634Z&maxTime=2023-10-10T03:30:03.634Z HTTP/1.1",
"request_bytes": "1094",
"response_bytes": "4083",
"src_ip": "x.x.x.53",
"src_port": "49605",
"timestamp": "2023-10-10T03:48:55Z",
"user_agent": "like Gecko) Chrome/117.0.0.0 Safari/537.36"
}
由于 curl 和 postman 工作正常,这似乎是浏览器特定的问题。我已经检查了系统上的空间(这很好),在 Chrome 上下载设置(看起来也很好)。
有没有 haproxy 在内部重试请求或浏览器再次发送请求而没有显示在网络选项卡上的情况?
即使请求必须等待 5 分钟以上,它在我的环境中也能正常工作。但是问题发生在客户的环境中。
答:
0赞
symcbean
10/11/2023
#1
有没有 haproxy 在内部重试请求或浏览器再次发送请求而没有显示在网络选项卡上的情况?
是的。Chrome、Firefox 和 Edge 都有 5 分钟的 http 请求超时时间。
在这种情况下,日志收集可能需要 15-20 分钟。
然后,您无法从浏览器对日志进行同步回复。您需要使用 comet 或 Web 套接字(我建议它们实现一个重定向到内容而不是直接提供内容的标记系统)。
评论
0赞
codingenious
10/11/2023
在我的环境中,即使 8-9 分钟没有收到响应,我也看不到循环行为。它特定于客户的环境。其中设置几乎相似。我在问题中添加了图像。
0赞
codingenious
10/11/2023
我检查了我的浏览器,它被设置为 300。不确定这是否是我正在检查的 coorect 设置。但如果是,它不会导致请求失败/循环。network.http.response.timeout
评论