Что видят пользователи, когда Apache достигает MaxClients?

8

Иногда в моем журнале ошибок Apache я нахожу:

[error] server reached MaxClients setting, consider raising the MaxClients setting

В прошлом я намеренно снизил MaxClients (до 60) из-за проблем с нехваткой памяти, но я хотел бы точно знать, что происходит на стороне пользователя, когда этот предел достигается на сервере. Неужели страница, к которой они обращаются, загружается дольше? Они получают какое-то сообщение об ошибке?

runningonplants
источник
1
Вероятно, нетрудно построить тест для этого. На тестовом сервере попробуйте сбросить MaxClients до 1 и посмотрите, что происходит, когда вы обновляете вещи в нескольких окнах или вкладках.
Готи
Определенно - я надеялся, что кто-то узнает, прежде чем я это сделаю. Я не могу найти никакой информации в документации Apache.
runningonplants

Ответы:

13

Сначала клиентские запросы будут помещаться в очередь, пока на сервере apache не освободится процесс / поток. Таким образом, клиенты увидят задержку загрузки страницы. См. MaxClientsДокументацию параметров для получения дополнительной информации.

При помещении в очередь невыполненных работ клиентский запрос может в конечном итоге истечь время ожидания на стороне клиента. Затем пользователь увидит страницу ошибки в своем браузере, сообщающую, что серверу требуется слишком много времени, чтобы дать ответ. Например, значение времени ожидания по умолчанию составляет 300 секунд в Firefox . Или пользователь отменит запрос до истечения времени ожидания ...

Затем, если сервер получает больше запросов и не может вовремя получить бесплатный процесс / поток, ListenBacklogочередь может быть заполнена (по умолчанию 511 запросов в очереди), и любой последующий запрос не будет обработан вообще. Затем браузер сообщит пользователю, что он не может подключиться к веб-сайту, например, если веб-сайт полностью отключен.

Эта очередь невыполненных работ управляется на уровне ОС в реализации TCP. Под linux listenстраница справки даст вам больше информации о том, как она управляется. Вот еще одно очень полезное чтение об очереди невыполненных работ TCP в системах Linux и BSD .

Tonin
источник
Именно то, что мне нужно было знать. Спасибо! Вы случайно не знаете, есть ли способ узнать, сколько процессов находится в очереди ListenBacklog?
runningonplants
1
Эта очередь невыполненных работ управляется ОС как часть стека tcp. Взгляните на listenсправочную страницу. Я не уверен, что есть прямой способ узнать, что содержит эта очередь. Также посмотрите этот ТАК вопрос . Я добавил больше информации в мой ответ.
Тонин