Я знаю директивы Apache MaxClients
и ListenBacklog
. Я пытаюсь установить предел, скажем, 100 одновременных подключений, после чего новые подключения будут обслуживать статическую страницу. Это можно сделать? Должен MaxClients
и ListenBacklog
быть выше или ниже этого предела? Как я могу это проверить?
Если Apache не может принять входящее соединение, потому что он уже обрабатывает MaxClients, он не может обслуживать статическую страницу. Итак, у меня нет веских доказательств, но я не понимаю, как вы могли бы добиться этого с помощью одного только Apache. Вы могли бы поместить что-нибудь перед Apache, который возвращает статическую страницу, если Apache возвращает ошибку соединения, но мне это кажется сложной конфигурацией. Надеюсь, кто-нибудь докажет, что я ошибаюсь.
Вот как я это сделал: скажем, я хочу разрешить X одновременных запросов, после чего следующие Y параллельных запросов останутся в очереди, ожидая завершения первого X, и все, что превышает X + Y, будет обслуживаться статической страницей. :
В httpd.conf
должны быть установлены следующие директивы:
MaxClients X
ServerLimit X
ListenBacklog Y
Зарегистрируйтесь как root в MySQL, установите max_connections
:
set global max_connections = X
Отредактируйте .htaccess
файл из общей корневой папки вашего сервера:
ErrorDocument 503 error_503.html
Убедитесь, что ваш error_503.html обслуживается одним запросом. Все таблицы стилей и скрипты должны быть в этом файле. Если вы хотите включить изображения, вам нужно будет использовать схема URI данных. Кроме того, вам придется разрезать свои изображения, потому что в IE URI данных должны быть меньше 32 КБ.