Как проверить количество открытых соединений в node.js?

У меня есть машина, работающая node.js (v0.1.32) с tcp сервером (tcp.createServer) и http сервером (http.createServer). http сервер поражен длинными запросами опроса (длящийся 50 секунд каждый) из основанного на комете приложения на порте 80. И существуют tcp сокетные соединения на порте 8080 из приложения для iPhone для той же цели.

Было найдено, что сервер не смог обработать больше соединений (особенно соединения TCP, в то время как http соединения казались прекрасными!!??) некоторое время и было нормально только после перезапуска.

Для загрузки, тестирующей соединения, я создал tcp сервер и породил 2 000 запросов и полагал, что соединения, начинающие перестать работать после макс. предела дескриптора файла на машину, достигнуты (значение по умолчанию 1024). Который является очень действительно небольшим числом.

Так, вопрос о новичке здесь: Как я масштабирую свое приложение для обработки большего количества количества соединений на node.js и как я обрабатываю эту проблему.

Существует ли способ узнать, сколько активные соединения там в данный момент?

Спасибо Sharief

7
задан Sharief Shaik 9 July 2010 в 16:39
поделиться

2 ответа

Привет, Джоуи! Я искал unix-решение, которое помогло бы мне выяснить количество открытых соединений в определенный момент времени на моей машине. Причина была в том, что мой сервер не мог обрабатывать запросы после определенного количества соединений. Я выяснил, что моя машина может обрабатывать только 1024 открытых соединений одновременно, т.е. значение дескриптора файла ulimit, которое по умолчанию равно 1024. Я изменил это значение, установив ulimit -n, что соответствует моим требованиям.

Для проверки открытых соединений я использовал lsof, который выдает список открытых файлов, и подсчитал, сколько соединений открыто через каждый порт, который я использовал.

2
ответ дан 7 December 2019 в 16:38
поделиться

Я не знаю, есть ли встроенный способ получить количество активных подключений с помощью Node, но это довольно просто подстроить что-нибудь.

Для моего приложения Node в стиле кометы я сохраняю объект, к которому я добавляю соединения, как свойство. Каждые X секунд я перебираю этот объект и смотрю, есть ли какие-либо соединения, которые следует закрыть (в вашем случае, все, что превышает ваш 50-секундный предел).

Когда вы закрываете соединение, просто удалите это свойство из вашего объекта соединений. Затем вы можете увидеть, сколько соединений открыто в любой момент с помощью Object.size (connections)

1
ответ дан 7 December 2019 в 16:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: