Назад | Перейти на главную страницу

Как проверить, сколько HTTP-соединений открыто в настоящее время?

Я хочу знать, сколько людей подключено к моему серверу. Поскольку я занимаюсь аппликациями комет, это важно

Есть около миллиона способов сделать это, но:

netstat | grep http | wc -l

Имейте в виду, что http - это протокол без сохранения состояния. Каждая строка может представлять одного клиента, открывающего несколько сокетов для захвата разных файлов (css, изображений и т. Д.), Которые будут зависать некоторое время в состоянии ожидания времени.

Ниже приведены некоторые команды netstat, с помощью которых вы можете проверить количество подключений к серверу.

Чтобы отобразить все активные Интернет-соединения с серверами, включены только установленные соединения.

netstat -na

Чтобы отображать только активные Интернет-соединения с сервером на 80-м порту и сортировать результаты, разрешите распознавать множество соединений, поступающих с одного IP-адреса.

netstat -an | grep :80 | sort

Чтобы отобразить список всех задействованных IP-адресов, а не просто подсчитать.

netstat -n -p | grep SYN_REC | sort -u

Если ваш веб-сервер - apache, вы также можете использовать Статус сервера страница (после включения).

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

Например:

tcp        0      0 10.224.38.158:8080          10.225.239.6:38194          ESTABLISHED
tcp        0      0 10.224.38.158:8080          10.225.239.6:56825          ESTABLISHED
tcp        0      0 10.224.38.158:51512         10.226.194.28:8080          ESTABLISHED
tcp        0      0 10.224.38.158:51960         10.226.194.28:8080          TIME_WAIT
tcp        0      0 10.224.38.158:46937         10.226.194.28:8080          ESTABLISHED
tcp        0      0 10.224.38.158:51331         10.226.194.28:8080          TIME_WAIT
tcp        0      0 10.224.38.158:8080          10.225.239.6:29634          ESTABLISHED

Неизбирательная команда grep -c или awk | wc -l вернет «7», но на самом деле существует только «3» входящих соединений. В любом случае, я не нашел изящного способа сделать это, и мой awk-fu не так уж и плох, но в конечном итоге я выбрал netstat -an, использовал awk для печати только столбца «локальный адрес» и подсчитал экземпляры порт ищу.

netstat -an | grep -c 8080

ВЫХОД: 91

netstat -an | awk '{print $4}' | grep -c 8080

ВЫХОД: 31

Итак, 31 подключенный сокет на порт 8080. Надеюсь, это поможет. Если кто-нибудь знает более лаконичный способ сделать это, поделитесь им.