Назад | Перейти на главную страницу

Настройка lighttpd для множества облегченных одновременных HTTP-соединений Keep-Alive

Я использую lighttpd в качестве внешнего прокси для моего настраиваемого сервера приложений на основе HTTP. Мне нужно настроить lighttpd для большого количества (скажем, около 5000) одновременных HTTP-подключений с большим таймаутом и настройкой KeepAlive. Каждое соединение будет простаивать. Представьте себе чат-сервер на основе HTTP.

Мой HTTP-сервер использует взаимодействие, подобное http-push Comet (см. Википедию http://en.wikipedia.org/wiki/Comet_(programming) ). В частности, клиент AJAX отправляет запрос GET, на который сервер не сразу отвечает. Вместо этого сервер ожидает с открытым HTTP-соединением, пока ему не потребуется сообщить клиенту новое состояние, а затем отправляет HTTP-ответ на запрос GET. Клиент обрабатывает ответ и переходит к отправке еще одного запроса GET, на который снова сервер не сразу ответит.

Однако, ради вопроса, точный характер запросов не требуется. По сути, необходима конфигурация lighttpd, которая позволяет одновременно открывать большое количество одновременных HTTP-прокси-соединений с низкой пропускной способностью.

Как настроить lighttpd 1.4.19. Я работаю под Ubuntu 8.04. lighttpd передает запросы к моему серверу приложений, а также к моему бэкэнду django.

Утверждается, что lighttpd может обрабатывать 10 000 одновременных подключений. Как мне настроить его на половину этого числа, большинство из которых в основном простаивает?

Вам понадобится Lighttpd-1.5.x (в значительной степени из SVN), чтобы сделать это правильно, потому что прокси в 1.4.x не будет I / O-мультиплексировать бит связи Lighttpd <--> backend в 1.4.x.

Насколько мне известно, я обнаружил, что Lighttpd-1.5.x - единственный обратный прокси-сервер, способный на это.

Вы хотите использовать mod_proxy_core и mod_proxy_backend_http, и используйте proxy-core.max-keep-alive-requests и proxy-core.max-pool-size (обратите внимание, как они имеют префикс «proxy-core.» вместо «server.»): http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModProxyCore

Я протестировал это с 20 000 одновременных соединений keep-alive (Lighttpd <-> backend), и он работает хорошо.

Помните, что каждое прокси-соединение использует (как минимум) два FD, один для клиента, один для проксируемого сервера. Также учитывайте ~ 5-50 FD для накладных расходов.

Что касается остальной части вашего вопроса, я бы сказал, что вам нужно протестировать свое приложение в своей среде, чтобы найти лучшие настройки для вас.