Nodejs 有没有什么工具能做到访问一个页面记录全链路的耗时?
有一个 next.js 项目,走的是 SSR 模式,在服务端会调用一些接口,想通过工具记录每一次访问调用各个接口的耗时,维度是访问的 URL 。
Nodejs 有没有什么工具能做到访问一个页面记录全链路的耗时?
microsoft charity
主要是业务埋点 工具很多
#5 这个不错呀
只看耗时,浏览器开发者工具的网络瀑布流就可以吧,如果要更多渲染数据,性能分析的数据应该足够了。
sentry,skywalking
这个前阵子调研了一下,牛是牛,但是好重的感觉
后端接口要做性能监测的话,肯定是有代码侵入的。
不是侵不侵入的问题,就是感觉 sentry 很重,各种中间件加起来比我们整个公司用的都多😂
谢谢大家,最终用了 skywalking ,基本无侵入就能达到效果
针对Node.js环境中访问页面记录全链路耗时的问题,确实存在一些工具和方法可以实现这一目标。
首先,Node.js自带了一些性能监控和分析工具,如console.time
和console.timeEnd
,可以用于测量代码块的执行时间。然而,这些工具通常用于简单的性能调试,可能不足以满足全链路监控的需求。
对于更复杂的场景,可以使用一些专业的性能监控和分析工具。例如,clinic
是一个由Node.js官方维护的性能分析工具,提供了多种分析场景和可视化报告,有助于定位和解决性能问题。虽然clinic
本身不直接提供全链路耗时记录功能,但它可以通过生成火焰图等方式,帮助开发者深入分析应用的性能瓶颈。
此外,还可以使用一些专门的链路追踪工具,如klg-tracer
。这个工具基于OpenTracing标准,提供了链路追踪信息,并支持将tracer信息写入数据库(如MongoDB)。通过配置和定制,klg-tracer
可以实现全链路耗时记录和分析。
以下是一个简单的klg-tracer
使用示例:
const { TraceService, Tracer } = require('klg-tracer');
new TraceService().registerHooks({
httpServer: {
useKoa: true,
// 过滤器,只记录特定接口
requestFilter: function (req) {
return true; // 根据需求定制过滤条件
}
}
}).registerMongoReporter({
mongoUrl: 'your-mongo-url',
collectionName: 'tracer'
});
这段代码展示了如何在Koa服务器中使用klg-tracer
,并将追踪信息写入MongoDB。