Иногда в моем журнале ошибок Apache я нахожу:
[error] server reached MaxClients setting, consider raising the MaxClients setting
Я намеренно снижал MaxClients в прошлом (до 60) из-за проблем с нехваткой памяти, но я хотел бы точно знать, что происходит на стороне пользователя, когда этот предел достигнут на сервере. Страница, к которой они обращаются, просто загружается дольше? Они получают какое-то сообщение об ошибке?
Сначала клиентские запросы будут помещены в очередь до тех пор, пока не появится процесс / поток, который освободится на сервере apache. Итак, клиенты увидят задержку загрузки страницы. Увидеть MaxClients
документация по параметрам Чтобы получить больше информации.
Когда клиентский запрос помещается в очередь невыполненных работ, время ожидания может истечь на стороне клиента. Тогда пользователь увидит в своем браузере страницу с ошибкой, сообщающую, что сервер слишком долго не отвечает. Значение времени ожидания по умолчанию: 300 секунд в Firefox, например. Или пользователь отменит запрос до истечения времени ожидания ...
Затем, если сервер получает больше запросов и не может вовремя получить бесплатный процесс / поток, ListenBacklog
очередь может быть заполнена (по умолчанию 511 запросов в очереди), и любой последующий запрос не будет обслуживаться вообще. Затем браузер сообщит пользователю, что не может подключиться к веб-сайту, как если бы веб-сайт был полностью отключен.
Эта очередь невыполненных работ управляется на уровне ОС в реализации TCP. Под Linux listen
man-страница предоставит вам больше информации о том, как им управлять. Вот еще один очень полезное чтение об очереди невыполненных работ TCP в системах Linux и BSD.