На просторах сети Интернет размещено множество руководств по настройке веб-сервера Nginx, но, почему-то, крайне редко упоминается о встроенном механизме мониторинга активных соединений. А ведь это очень полезная информация, которая поможет следить за состоянием сервера, а также пригодится при настройке и оптимизации Nginx.
За сбор и вывод статистики отвечает модуль ngx_http_stub_status_module.
Проверить установлен ли данный модуль можно выполнив команду:
1 |
nginx -V 2>&1 | grep -o with-http_stub_status_module |
Если в ответ получили строку:
1 |
with-http_stub_status_module |
значит модуль установлен. В противном случае нужно пересобирать пакет Nginx с флагом
1 |
--with-http_stub_status_module |
или, если у Вас Ubuntu, установить пакет nginx-full.
Если необходимый модуль присутствует, нужно настроить специальный location блок для уже существующего сайта, или можно повесить его на localhost.
Добавляем в конфиг виртуального хоста:
1 2 3 4 5 6 |
location /nginx_status_page { stub_status on; access_log off; allow 192.168.1.1; deny all; } |
До версии 1.7.5 синтаксис директивы требовал наличия произвольного аргумента, например “stub_status on”, после достаточно просто“stub_status”. Обратите на это внимание, так как, например, на дистрибутиве Debian 8 из стандартного репозитория устанавливается версия Nginx 1.6.2.
Для безопасности, доступ к странице был ограничен с IP 192.168.1.1, замените его на IP-адрес с которого Вы обращаетесь к сайту.
Теперь при обращении к странице nginx_status_page (например http://yor-site.com/nginx_status_page) Nginx сгенерирует простую веб-страницу с основной информацией о состоянии, вида:
1 2 3 4 |
Active connections: 291 server accepts handled requests 7368 7368 10993 Reading: 6 Writing: 179 Waiting: 106 |
Где:
- Active connections — Текущее число активных клиентских соединений, включая Waiting-соединения. Это значение не показывает количество пользователей, т.к. один пользователь, для одного просмотра страницы, может открыть множество параллельных подключений к вашему серверу.
- Server accepts handled requests — показывает три значения:
- первое — accepts, общее количество принятых подключений;
- второе — handled, общее количество обработанных подключений. Обычно совпадает с первым значением,если не достигнуто какое-нибудь системное ограничение (например, лимит worker_connections);
- третье — requests, суммарное число клиентских запросов;
- разделив третье значение на второе Вы получите количество запросов на одно соединение. В примере выше, 10993 / 7368 = 1.49 запросов на соединение.
- Reading — текущее число соединений, в которых nginx в настоящий момент читает заголовок запроса.
- Writing — текущее число соединений, в которых nginx в настоящий момент отвечает клиенту.
- Waiting — текущее число бездействующих клиентских соединений в ожидании запроса.
Еще один вариант конфигурации, создать виртуальный хост привязав его к localhost:
1 2 3 4 5 6 7 8 9 10 |
server { listen 80; server_name localhost; location /nginx_status_page { stub_status on; allow 127.0.0.1; deny all; } } |
В данном случае посмотреть статистику можно выполнив команду в консоле сервера:
1 |
curl localhost/nginx_status_page |
И напоследок, как посмотреть количество подключений к Nginx без модуля ngx_http_stub_status_module.
Исключаем из вывода утилиты netstat -an строки содержащие TIME_WAIT или выбираем только строки с ESTABLISHED:
1 |
netstat -an | grep :443 | grep -v TIME_WAIT | wc -l |
или
1 |
netstat -an | grep :443 | grep ESTABLISHED | wc -l |