gpt4 book ai didi

node.js - Nodejs Websocket内存泄漏

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:16 27 4
gpt4 key购买 nike

我正在使用带有socket.io的 Node v4.2.1(我什至已经测试了websocket/ws获得“更好”的结果,但仍然不够)。目前打开的连接很少(数百个),内存使用率为 38%(我在 AWS t2.small Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-48-generic x86_64) 上运行) .

服务器代码非常简单(仅用于测试):

... declaration ...
io.on('connection', function(socket){
socket.send("hi");
});

就客户端代码而言,我使用的是相应的socket.io版本。套接字怎么可能占据内存中的所有空间?

此外,我正在关注这篇文章:

http://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/

我使用 --expose-gc 标志运行服务器,但似乎不起作用(每 30 秒我强制垃圾收集器 global.gc),有什么猜测吗?

最佳答案

nodejs GC 大多是惰性的,会消耗内存直到达到 1.4Gb 的限制。在重负载应用程序中,通常会看到 Node 进程上升到约 1.4Gb,然后回落到 200Mb 的模式。

GC 是惰性的,因为它是同步的(阻塞循环、停止整个进程、糟糕的事情......)。

它是可配置的*,这里使用 --max-old-space-size 800Mb。

node --max-old-space-size=800 app.js

为了减少(或增加)此限制。

  • --max-old-space-size 实际上配置的是node最大的内存空间,默认是1400左右,并不是说GC的。但是当旧的空间大小达到极限时,就会触发完整GC。

关于node.js - Nodejs Websocket内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35049442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com