【问题标题】:How can I get the response time of a HTTP request in elixir?如何在 elixir 中获取 HTTP 请求的响应时间?
【发布时间】:2018-02-09 12:52:57
【问题描述】:

我正在对我的 api 端点进行一些监控。我已经尝试过一些 http 客户端,例如 httpoison 和 hackney erlang 库。但是他们不给我http响应时间,是吗?有人经历过这种情况吗?如果有人可以帮助我,将不胜感激。

【问题讨论】:

    标签: erlang elixir


    【解决方案1】:

    将您的电话转入timer:tc/1。见http://erlang.org/doc/man/timer.html#tc-1

    在 Erlang 中,应该是这样的:

    {ElapsedUs, Result} = timer:tc(fun() -> hackey:get(Url) end).
    

    Hackney 还支持通过 folsom 或 exometer 报告指标(包括时间)。见https://github.com/benoitc/hackney#metrics

    【讨论】:

    • Thz,但我已经用那个试过了。它只给我函数执行时间。因此,它总是大于实际响应时间。当连接超时时,它的返回值大于我设置的超时值。这就是为什么我在寻找更好的方法。
    • 要大多少?与 HTTP 往返相比,我很难相信函数调用开销甚至是可观察到的。
    • 以毫秒为单位,我在 HTTPoison 中设置超时 10 毫秒并发出请求。它的超时和 timer.tc 给我像 12,13 毫秒
    • 10 毫秒超时可能只精确到几毫秒。这可以解释为什么你看到 12ms 过去了。毕竟,Erlang 唯一的软实时。
    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2020-11-26
    相关资源
    最近更新 更多