Node JS,Highcharts内存使用不断攀升

时间:2013-06-25 15:49:15

标签: node.js highcharts

我正在寻找使用Node JS构建的应用程序,它正在产生一些有趣的问题。它最初是在Node JS v0.3.0上运行的,我已经升级到v0.10.12。我们正在使用Node JS在服务器上呈现图表,我们注意到内存使用率在图表之后不断攀升。

Q1 :我一直在监视Node JS进程顶部的RES列,这是正确的还是我应该监控其他内容?

我一直在将变量设置为null以尝试将内存重新分配给系统资源(我将其作为解决方案在某处阅读)并且它只会略有不同。

我已经将应用程序一直推到1.5gb然后停止运行并且该过程似乎没有死亡。没有我发现奇怪的错误消息。

Q2 :我还能做些什么吗?

由于 史蒂夫

2 个答案:

答案 0 :(得分:1)

这是版本的巨大跳跃。您可能希望分享您为使其在最新稳定版上工作所做的更改。 api与v0.3中的api不同,因此可能是问题的一部分。

如果没有,那么你看到的问题更可能来自堆碎片而非实际泄漏。在后来的v8版本中,垃圾收集通过清理更加自由,以提高性能。 (有关此问题的讨论,请参阅http://code.google.com/p/chromium/issues/detail?id=112386

您可以尝试使用--max_old_space_size=32运行应用程序,这将限制v8可以使用的内存量大约为32MB。请注意文档说“老一代的最大大小”,因此它不会完全 32MB。就在它周围,缺乏更好的技术解释。

您还可以使用--trace_external_memory跟踪外部内存使用量。这将允许您知道您的应用程序中是否保留了外部存储器(即缓冲区)。

你注意到1.5GB左右的应用程序会告诉我你可能在64位系统上。您只提到它停止运行,但没有注意到CPU在此期间是否正在旋转。此外,由于我没有示例代码,我不确定可能导致这种情况发生的原因。

我会尝试在撰写本文时运行最新的开发(v0.11.3)并查看问题是否已修复。正在开展许多性能/内存增强,这可能有助于解决您的问题。

答案 1 :(得分:0)

我猜你有一个内存泄漏(以闭包的形式?),它将(不再使用的?)图表(?)保存在内存中。

当涉及到>时,v8有时需要稍微调整一下。 1 GB内存。试用--noincremental_marking和/或--max_old_space_size=81920000(如果您有8 GB可用)。

使用node --v8-options检查更多选项,并查看--trace* - 参数,找出减慢/停止节点的内容。