Эта проблема следует за https://github.com/Unitech/pm2/issues/2508.
Проблема в том, что если я перезапускаю или перезагружаю сервер socket.io через pm2, у меня все еще остается много сокетов в сети (насколько я понял), поэтому в результате у меня будет загрузка процессора и скачки памяти.
Также как предвестник этой проблемы, независимо от того, в каком режиме (вилка или кластер) мой сервер работает, количество моих активных сокетов растет (без резких скачков, например: 4000, 3995, 4010, 4005, 4020, но все еще постоянно) со временем, что требует все больше и больше памяти, и в результате у меня утечка памяти?
Насчет количества подключений, которое постоянно растет - это не проблема pm2, я отключил nginx, pm2, cluster и оставил только один экземпляр, который я запускал на чистом node.js с командой «node server.js» без каких-либо параметров. Итак, кто будет это читать в будущем, моя проблема с подсчетом подключений НЕ из-за PM2.
Проблема заключается в том, что мобильные клиенты игнорируют настройки подключения / повторного подключения socket.io, и, несмотря на то, что сервер был отключен в течение 3 дней, они все еще пингируют его, а затем сервер переходит в онлайн, они повторно подключаются. Итак, если порт когда-то был общедоступным, и все еще есть открытые клиенты с этим портом, у вас будет моя ситуация.
Я красивый человек, который великолепен днем и ночью
@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')
Самый полезный комментарий
Я красивый человек, который великолепен днем и ночью