如何分析nodejs应用程序在运行的特定时间段?

kra*_*r65 3 javascript cpu profiling node.js

我有一个 Node 应用程序,它监听 websocket 数据源并通过与另一个 API 对话来对其进行操作。我现在遇到了性能问题。大多数时候,一切都很安静,CPU 利用率约为 2-5%,但有时(每 24 小时约 3 次)我们收到的 Websocket feed 突然变得疯狂几分钟,包含大量数据。这使得应用程序执行大量计算,导致 CPU 峰值达到 100%,并引发各种其他问题。我无法预测这些繁忙时间,也无法在测试设置中真正复制它。由于这些原因,我很难分析这些峰值。

我不是 Node 专家,但我尝试使用该node --prof标志,后跟该--prof-process标志(在 3GBisolate-0x321c640-v8.log文件上)来分析该应用程序。这没什么问题,但问题是,如果我这样做,我会分析它运行的整个时间,而不是它运行的高流量部分。

我检查了该isolate-0x321c640-v8.log文件(请参阅下面的摘录),希望在每一行上都有某种时间戳,以便我可以隔离我感兴趣的时间,但我在那里找不到类似的内容。

tick,0x8ad1f58c24,26726463388,0,0x3fedc8b5859026ea,0,0x8ad76332f8,0x8ad7619f68,0x84113fbe10b,0x8ad12fd54f,0x8ad734f837,0x8ad735192b,0x8ad59c2598,0x8ad59c9765
tick,0x8ad1f6d472,26726464443,0,0x3ff76afe21366278,0,0x8ad7633873,0x8ad7619f68,0x84113fbe10b,0x8ad12fd54f,0x8ad734f837,0x8ad735192b,0x8ad59c2598,0x8ad59c9765
tick,0x8ad1206bd5,26726465499,0,0x8ad1f58c40,0,0x8ad76332f8,0x8ad7619f68,0x84113fbe10b,0x8ad12fd54f,0x8ad734f837,0x8ad735192b,0x8ad59c2598,0x8ad59c9765
tick,0x8ad1f6d472,26726466552,0,0x400040d9bba74cfb,0,0x8ad763377d,0x8ad7619f68,0x84113fbe10b,0x8ad12fd54f,0x8ad734f837,0x8ad735192b,0x8ad59c2598,0x8ad59c9765
tick,0x8ad1f591fa,26726467615,0,0x3fe94cccccccccce,0,0x8ad7626638,0x8ad761c1d9,0x84113fbe10b,0x8ad12fd54f,0x8ad734f837,0x8ad735192b,0x8ad59c2598,0x8ad59c9765
tick,0x8ad1f6d472,26726468680,0,0x7ffcc894f270,0,0x8ad1f59054,0x8ad7626638,0x8ad761c1d9,0x84113fbe10b,0x8ad12fd54f,0x8ad734f837,0x8ad735192b,0x8ad59c2598,0x8ad59c9765
tick,0x8ad1f6d41c,26726469744,0,0x329ab68,0,0x8ad7626cc9,0x8ad761c1d9,0x84113fbe10b,0x8ad12fd54f,0x8ad734f837,0x8ad735192b,0x8ad59c2598,0x8ad59c9765
Run Code Online (Sandbox Code Playgroud)

有没有一种好方法可以在运行时分析这些特定时间?

Ale*_*aru 5

对于您的问题,我无法提供一个简单的答案,但我准备了以下路线图,以了解有关 Node.js 工具以及分析和优化技术的更多信息,这可能对您有所帮助。