Увеличение одновременных соединений с apache2
Как я могу увеличить количество одновременных подключений в apache2? Я использую приложение javascript, которое регулярно опрашивает сервер, и пытаюсь предотвратить блокировку клиентов. Я знаю, что должен перейти на неблокирующий веб-сервер, но до этого, есть ли какой-нибудь взлом, который я могу сделать в apache, чтобы оптимизировать это? Благодарю.
2 ответа
Выполните поиск на этом сайте для " MaxClients", который должен получить довольно много информации, чтобы вы начали.
Может быть несколько директив, на которые вы хотите обратить внимание, в зависимости от ресурсов вашего сервера, которые могут повлиять на количество одновременных соединений и, следовательно, на производительность вашего веб-сервера. Вот несколько примеров (некоторые могут или не должны быть настроены в зависимости от вашей среды):
- StartServers
- MaxSpareServers
- MinSpareServers
- MaxClients
- ServerLimit
- MaxRequestsPerChild
- KeepAlive
- KeepAliveTimeout
- MaxKeepAliveRequests:
На уровне Apache вы хотите максимизировать MaxClients
значение без исчерпания памяти. Например, вы можете установить MaxClients равным 1000, и он будет работать нормально, пока у вас не будет столько одновременных подключений, что вы исчерпаете ОЗУ и начнете использовать своп, и в этот момент производительность вашего сервера будет падать.
В качестве грубого руководства вы можете запустить top
и посмотреть на все httpd
записи с учетом разницы между RES
а также SHR
колонны. Это значение является приблизительной памятью, используемой клиентскими процессами Apache. Разделите общее количество памяти, которое вы хотите использовать Apache, на это число, чтобы получить начальные значения MaxClients. Например, для среднего размера процесса Apache, равного 20 МБ, использование 3 ГБ дает 3000/20 = 150 MaxClients.
Если вы хотите еще больше увеличить MaxClients, вы можете попытаться уменьшить размер процессов Apache, не загружая модуль, который вам не нужен.
Как вы упомянули, вы можете рассмотреть альтернативный веб-сервер или, возможно, двойной веб-сервер Apache, чтобы увеличить число возможных одновременных подключений. Когда Apache настроен на работу с динамическими страницами сервера (PHP и т. Д.), Он относительно жаден до памяти, что накладывает относительно низкий лимит на количество подключений, которые вы можете иметь, прежде чем закончится ОЗУ. Обычный выбор в этом случае - использовать более легкий веб-сервер (Lighttpd, Nginx и т. Д.) Для обслуживания всего статического содержимого и оставить Apache для обслуживания только динамических страниц.