当前位置 : 主页 > 网页制作 > Nodejs >

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

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在开发一个项目,需要处理数十个活跃的套接字并发连接.现在一直在查看内存使用情况和V8引擎,我使用的是Node.js v0.10.19(稳定版) 我无法承受“系统内存不足”事件的发生.因此,目前
我正在开发一个项目,需要处理数十个活跃的套接字并发连接.现在一直在查看内存使用情况和V8引擎,我使用的是Node.js v0.10.19(稳定版)

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

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

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

这就是我要问的问题:

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

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

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

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

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

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

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

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

网友评论