我想测量完整请求堆栈的时间。New Relic 捕获中间件(例如 java、python、ruby)的时间和请求时间(参见https://newrelic.com/docs/features/tracking-front-end-time)。为此,我需要X-Request-Start
在请求通过 HAProxy 负载平衡时配置标头。haproxy.cfg 应如下所示:
backend www
balance roundrobin
mode http
reqadd "X-Request-Start" UNKNOWN_TIME_FUNCTION()
server servername 192.168.0.1:80 weight 1 check
有没有haproxy原生的功能来代替UNKNOWN_TIME_FUNCTION()
?
答案1
现在还不能这样做,不过在我们可以传递 SSL 信息后就可以了,因为我们将允许在标头中传递任何动态信息。这条信息也可能是当前时间。
如果您确实需要这个,在代码中实现它并不困难。理想情况下,它应该在函数中完成,该函数还能够在标头中发送服务器名称,以便在重试连接或重新分派的情况下更新时间,尽管这似乎并不重要。
哦,顺便说一句,为什么不像所有人一样简单地使用 haproxy 的日志来测量您的精确处理时间?它可以完全满足您的需要,并提供更多细节(例如:拆分连接/处理/传输),而无需在服务器中更改任何内容,并且更准确(让两台机器以少于 1 毫秒的同步时间并不容易)。