Chrome Haproxy -浏览器通信,请求正在循环

kninwzqo  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(107)

我的服务器上有一个日志收集服务,它使用的是haproxy。所有来自外部的请求都通过haproxy服务。

当我从curl/postman调用日志收集服务时,所有服务的日志收集都在后端进行,并在客户机上下载一个zip。
即使对于30 GB的文件,使用curl/postman也会发生这种情况。在这种情况下,日志收集可能需要15-20分钟。
但在使用浏览器时,操作会进入循环行为,即。haproxy不断从客户端获取新的请求,而旧的请求具有haproxy_termination_state:虽然网络选项卡不显示任何新的请求到服务器,并永远停留在挂起状态。

{
  "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分钟。但问题发生在客户的环境中。

qni6mghb

qni6mghb1#

当haproxy在内部重试请求或浏览器再次发送请求而不显示在网络选项卡上时,是否有任何情况?
是的。Chrome、Firefox和Edge都有5分钟的HTTP请求超时。
在这种情况下,日志收集可能需要15-20分钟。
那么你就不能从浏览器同步请求日志。您需要使用comet或web sockets(我建议这些实现一个重定向到内容的标记系统,而不是直接提供内容)。

相关问题