Я пытаюсь понять, каковы «физические» ограничения моего приложения.
На стороне клиента:
var socket = io.connect("http://127.0.0.1:6701");
socket.on('connect', function() {
socket.disconnect();
});
socket.on('disconnect', function() {
socket.socket.reconnect();
});
На стороне сервера:
var io = require('socket.io').listen(6701);
io.sockets.on('connection', function(socket) {
socket.on('disconnect', function(reason) {
var o = Object.keys(socket.manager.open).length
, c = Object.keys(socket.manager.closed).length
, cA = Object.keys(socket.manager.closedA).length
, h = Object.keys(socket.manager.handshaken).length
console.log("open: " + o)
console.log("closed: " + c)
console.log("handshaken: " + h)
console.log("closedA: " + cA)
console.log("---");
});
});
Когда в OSX я достигаю предела количества файлов (256), статистика выглядит следующим образом
open: 471
closed: 235
handshaken: 471
closedA: 235
Что меня удивляет:
- если я принудительно закрываю соединение (это то, что я хотел бы сделать с клиентом
disconnect()
, почему я все еще использую дескриптор файла (поэтому я достиг предела файла) edit: добавление задержки кажется, что сервер может дышать и никогда не достигает лимита файла)?
- Есть ли способ полностью закрыть сокет, чтобы я мог быть уверен, что лимит файла редко достигается (я знаю, что могу увеличить его до 65 КБ)?
- Есть ли способ узнать, что я достиг предела количества файлов, чтобы я мог прекратить принимать соединение?
Спасибо