Websocket nodejs内存泄漏

我使用节点v4.2.1与socket.io(我已经testing,即使与websocket / ws得到“更好”的结果,但仍然不够)。 目前有几个打开的连接(hundreads)和内存的使用百分比是38%(我运行在AWS t2.small Ubuntu 14.04.2 LTS(GNU / Linux 3.13.0-48-generic x86_64)) 。

服务器代码很简单(仅用于testing):

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

就客户端代码而言,我正在使用相应的socket.io版本。 插槽如何占用内存中的所有空间?

而且,我正在关注这个post:

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的极限。 在重载应用程序中,看到一个模式,其中节点进程达到〜1.4Gb,然后回退到200Mb是正常的。

GC是懒惰的,因为它是同步的(阻止循环,停止整个过程,坏东西…)。

它可以在--max-old-space-sizeconfiguration--max-old-space-size

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

为了减less(或增加)这个限制。

  • --max-old-space-size实际上configuration了最大的节点内存空间,默认情况下大概是1400,而不是说每个GC。 但是当旧的太空尺寸达到极限时,它会触发一个完整的GC。