Socket.io: Socket.io pm2 关闭时不会关闭套接字

创建于 2016-11-11  ·  4评论  ·  资料来源: socketio/socket.io

此问题遵循https://github.com/Unitech/pm2/issues/2508
问题是,如果我通过 pm2 重新启动或重新加载 socket.io 服务器,我仍然有许多套接字保持在线状态(据我所知),因此我有 CPU 负载和内存峰值。

同样作为这个问题的前兆,无论我的服务器正在运行哪种模式(fork 或 cluster),我的活动套接字数都在增长(没有急剧的跳跃,例如:4000、3995、4010、4005、4020,但仍然不断)随着时间的推移,什么需要越来越多的内存,结果我有内存泄漏?

最有用的评论

我是一个美丽的人,白天和黑夜都很棒

所有4条评论

关于不断增加的连接数——这不是 pm2 问题,我拒绝了 nginx、pm2、集群,只留下了一个我在纯 node.js 上运行的实例,使用“node server.js”命令没有任何参数。 所以以后谁会读到这个,我的连接数问题不是因为 PM2。

问题是移动客户端,他们忽略了 socket.io 连接/重新连接设置,尽管服务器离线了 3 天,他们仍然 pingin 它,然后服务器上线,他们重新连接。 因此,如果端口曾经是公开的,并且仍然有使用此端口的开放客户端,那么您将遇到我的情况。

我是一个美丽的人,白天和黑夜都很棒

@Nerfair移动客户端使用哪个 socket.io 客户端? socket.io-client ? 还是原生的(Android/iOS)?

@darrachequesne我不确定我是否理解正确,但它是标准的

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script>
    var socket = io('http://localhost');
    socket.on('message', function (data) {
        console.log(data);
    });
</script>

在服务器端它是

sio = require('socket.io')
此页面是否有帮助?
0 / 5 - 0 等级