gpt4 book ai didi

node.js - 可能的 socket.io 内存泄漏

转载 作者:IT王子 更新时间:2023-10-29 06:06:46 25 4
gpt4 key购买 nike

将 socket.io 0.9.17 与 redis 存储一起使用,随着时间的推移,内存使用量从启动时的 ~150mb 增加到超过 1.0gb。

我使用 node-heapdump 拍摄了 2 个堆快照.一个在应用程序启动后,另一个在一天后。比较结果,看起来最大的罪魁祸首是字符串对象。

下面是对比截图。

enter image description here

当我展开字符串对象时,我看到的只是一些痕迹和一个 uncaughtException。

enter image description here

应用程序不会崩溃,并且在开发环境中运行相同的代码时也不会出现异常。这些字符串是传递给 socket.io 并通过 redis 存储分发给 Node 的事件。相关代码如下

var result = {
posts: [postData],
privileges: {
'topics:reply': true
},
'reputation:disabled': parseInt(meta.config['reputation:disabled'], 10) === 1,
'downvote:disabled': parseInt(meta.config['downvote:disabled'], 10) === 1,
};

for(var i=0; i<uids.length; ++i) {
if (parseInt(uids[i], 10) !== socket.uid) {
websockets.in('uid_' + uids[i]).emit('event:new_post', result);
}
}

最佳答案

升级到 socket.io 1.x 消除了内存泄漏。

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

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