【发布时间】:2019-01-26 01:31:37
【问题描述】:
我有一个节点应用程序,它侦听 websocket 数据馈送并通过与另一个 API 对话对其进行操作。我现在遇到了性能问题。大多数时候事情都很安静,CPU 大约是 2-5%,但有时(大约每 24 小时 3 次)我们收到的 websocket 提要突然变得疯狂几分钟,有很多数据。这使得应用程序执行大量计算,导致 CPU 飙升至 100%,从而导致各种其他问题。我无法预测这些繁忙时间,也无法在测试设置中真正复制它。由于这些原因,我很难分析这些峰值。
我不是 Node 专家(在 Python/php 方面有更多经验),但我尝试使用 node --prof 标志分析此应用程序,然后使用 --prof-process 标志(在 3GB isolate-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
有人知道在运行时分析这些特定时间的好方法吗?欢迎所有提示!
【问题讨论】:
-
为什么投反对票?非常欢迎对我的问题有什么问题发表任何评论!
-
也许您可以将文件拆分为多个文件以减少部分运行时间的流量。
标签: javascript node.js profiling cpu