gpt4 book ai didi

node.js - 如何确定 Node.js 发送 HTTP 响应正文所花费的时间?

转载 作者:行者123 更新时间:2023-12-03 12:10:57 25 4
gpt4 key购买 nike

我当前的设置涉及使用 Express.js 的 Node.js Web 应用程序。
我正在使用 DataDog 的 dd-tracer 来测量 Node.js 花费在特定方法调用上的时间,作为我的 APM 解决方案的一部分。

我想知道是否可以测量传入 HTTP 请求忙于将数据作为 HTTP 响应正文发送回客户端的时间部分。

尝试进行此类检测时是否存在任何陷阱或不准确之处?
有谁知道为什么默认情况下 APM 客户端库不测量这一点?

最佳答案

I would like to know if it is possible to measure the portion of time an incoming HTTP request is busy sending data back to the client as HTTP response body.



您可以将调用包装到 res.write手动在请求跟踪中创建额外的跨度。如果请求中对该方法的调用不多,我只会建议这样做,否则我会建议只捕获一个指标。

或者,分析可能是一个选项,它可以为您提供更多关于在 res.write 中花费时间的确切信息。调用。

I look for a "global" solution which can be integrated into a Nest.js application without instrumenting each call to res.write manually.



如上所述,您可以简单地包装 res.write直接在每个请求的开始。使用跟踪器,可以这样实现:

res.write = tracer.wrap('http.write', res.write)

这应该在任何其他中间件有机会写入数据之前完成。

示例中间件:

app.use((req, res) => {
res.write = tracer.wrap('http.write', res.write)
})

Are there any pitfalls or inaccuracies involved when trying to do this kind of instrumentation?



我想不出什么大事。

Does anybody know why this is not measured by APM client libraries by default?



开箱即用的主要问题是为每个对 res.write 的调用创建一个跨度。如果电话太多,可能会很贵。如果您认为有一个开箱即用的选项是有意义的,我们绝对可以考虑添加它。

希望这可以帮助!

关于node.js - 如何确定 Node.js 发送 HTTP 响应正文所花费的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62042278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com