此问题遵循https://github.com/Unitech/pm2/issues/2508
问题是,如果我通过 pm2 重新启动或重新加载 socket.io 服务器,我仍然有许多套接字保持在线状态(据我所知),因此我有 CPU 负载和内存峰值。
同样作为这个问题的前兆,无论我的服务器正在运行哪种模式(fork 或 cluster),我的活动套接字数都在增长(没有急剧的跳跃,例如:4000、3995、4010、4005、4020,但仍然不断)随着时间的推移,什么需要越来越多的内存,结果我有内存泄漏?
关于不断增加的连接数——这不是 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')
最有用的评论
我是一个美丽的人,白天和黑夜都很棒