使用带有 http-server-close 和 keep-alives 的 haproxy HTTP 日志,日志中的时间计数器 (TR、Tt...) 基于 TCP 连接的开始。这意味着只有第一个请求,带有 cookie 状态 *NI (--NI) 具有与 HTTP 请求所用时间相对应的计时器。
接下来的将从 TCP 连接开始(空闲时间 + 前面的请求时间)。
有没有办法在不关闭 keepalive 或 http-server-close 的情况下绕过这种 haproxy 行为,或者我是否被迫更改此配置,或者在 haproxy 前面添加代理..?
最后有没有办法获取 HTTP 请求的总响应时间,而不是自 TCP 开始以来的时间?
答案1
time curl -v http://www.google.com http://www.google.com
这将使用保持活动,并且不会为任何请求打开新的 TCP 连接(只要您的 Web 服务器支持保持活动)。
- 连接 #0 至主机www.google.com完好无损
- 重新使用现有连接!(#0) 与主机www.google.com
或许这会给你一个开始。
Curl 在跟踪连接时间方面也有相当不错的选项。
所以这可能会给你你想要的东西。
祝你好运!
答案2
在细化了您的意思之后,我相信您想确切地了解 ha-proxy 实际上在做什么,而不是使用 curl 和 ab(apache bench)从客户端生成基准测试。
Ha 代理带有统计页面,可以为您提供大量参数。这可能正是您所需要的。
https://www.haproxy.com/blog/exploring-the-haproxy-stats-page/
您可以检索 haproxy 生成的统计数据。您应该对以下内容感兴趣
Response time
The server response time in milliseconds, averaged over the last 1024 successful connections.
祝你好运!