Я использую 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.
Я просто установил server.max-keep-alive-requests =
5000
и положить этому конец?
Должен server.max-fds = 5000
или какое-то большее число?
Какие есть соображения по поводу памяти?
Возможно, мне следует укрепить свой сервер приложений, чтобы его можно было использовать без прокси-сервера lighttpd (я не уверен, что мое программирование будет напрямую связано с миром без надежного прокси)?
Утверждается, что 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 для накладных расходов.
Что касается остальной части вашего вопроса, я бы сказал, что вам нужно протестировать свое приложение в своей среде, чтобы найти лучшие настройки для вас.