Могу ли я получить localhost/server-status, даже если MaxClients заполнен?

Могу ли я получить localhost/server-status, даже если MaxClients заполнен?

Я создаю систему мониторинга, которая будет определять, сколько (простых) запросов в данный момент обрабатывается. Метод, который я использую для определения этого, заключается в подключении к http://локальный хост/Состояние сервера .

Вопрос в том, если Apache не может обслуживать больше новых подключений (например, MaxClientsдостиг вершины), как я могу обнаружить статистику Apache? Возможно ли, что Apache достаточно умен, чтобы игнорировать MaxClientsконфигурацию для подключений с localhost?

Любая помощь будет оценена по достоинству.

решение1

Я считаю, что ответ — нет, по двум причинам (и третьей, неясной):

  1. Предположим, что запросы /server-status/были бы неуязвимы к MaxClients(но увеличивали количество клиентов). Тогда стало бы слишком легко DoS-апачу с запросами, так что легитимные запросы не могли бы быть обслужены (и поскольку они могут быть намного больше MaxClients, нет никаких шансов, что на настоящие запросы когда-либо ответят)

  2. Apache, скорее всего, будет иметь количество клиентов, основанное на [некоторой функции] количества открытых соединений (одно соединение может :80отправлять только один запрос за раз, но KeepAliveпозволяет нам использовать его повторно, поэтому одно открытое TCP-соединение по сути является одним клиентом). Это будет проверяться еще до того, как будут прочитаны заголовки (если есть место, он делегирует запрос для обработки. Если места нет, он быстро завершится неудачей).

  3. Когда я перегружен соединениями, service httpd fullstatusработает очень медленно или вообще не работает :-)

решение2

Вам может понадобиться написать модуль apache (или изменить mod_status), чтобы другой интерфейс использовался для связи с сервером apache. Вы можете захотеть использовать сигналы posix и общую память или файл для запроса и получения статистики.

Связанный контент