繁体   English   中英

在node.js中避免“系统内存不足”的最佳方法是什么?

[英]What is the best way to avoid “system out of memory” in node.js?

我正在开发一个项目,需要处理数十个活跃的套接字并发连接。 现在一直在查看内存使用情况和V8引擎,我使用的是Node.js v0.10.19(稳定版)

我无法承受“系统内存不足”事件的发生。 因此,目前正在运行多达15个节点实例,每个实例限制为单个服务器上的1GB RAM,并且具有足够的RAM以及四核处理器和负载平衡器,以便在所有实例中组织负载。

那么,有没有办法在V8堆栈外部存储套接字连接,如缓冲区或其他方式,以减少Node.js内存使用?

当然,由于您要保持数千或数万个连接打开,因此这样做会产生内存成本。

这就是我要问的问题:

您是在向数组或正在填充的对象中添加内容吗?

您是否为每个打开的连接实例化重型模块?

你能运行一个分析器来看看它在做什么吗? (人们对DTrace赞不绝口。)

是否可以按间隔轮询您想要的内容而不是保持Web套接字打开?

如果您无法运行探查器,您可以尝试的其他任务是在运行时记录应用程序的状态,以便您可以分析问题。 这是一种oldschool技术,但您可以在每次函数结束时进行记录,并查看当前的内存使用情况。 这也可能会扼杀一些记忆,但如果你发现问题,那就太好了。

通过Process模块​​检查内存使用情况:

http://nodejs.org/api/process.html#process_process_memoryusage

祝你好运,请让我知道你发现了什么。 我很想知道你是如何解决这个非常具有挑战性的问题的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM