Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Keep ALive for backend
Ну так веся конитель только потому что "юзать java.io смерти подобно... "
Алексей, Вы переходите в более философский вопрос.
Сам посебе такой метод обслуживания клиентов (http запрос каждые 2 сек)
является
полным идиотизмом, как и само использование weblogic для нашего вида
задач. Внезависимости от нативные либо бинарные библиотеки используются.
Ни nio, ни нативный конектор (Вы говорите про APR к токату) тут
применить влоб нельзя, иначе бы уже применили. Как раз сейчас и делаем
"свой http" на apache mina. Но это тоже временное решение.
В любом случае, мне кажется, что какой бы нибыл бекенд, конекты лучше
всего пулировать,
и если есть возможность иметь определенное количество persistent
соединений, то это будет
очень востребовано. Ни каждый бекенд может выдержать резкий наплыв запросов.
Например случай с базой данных, если бекенд формирует какие либо отчеты
и т.п. и по какой либо
причине не может обойтись фиксировааным пулом. Абстрактно ситуация может
быть такой:
- 10 активных запросов, каждый работает 1 сек.
- 50 - каждый работает 2 секунды
- 100 каждый работает по 5 минут. Ресурсы закончились, дикая конкуренция
за io и процессор приемущественно занят переключением контекста....
В этом случае выгоднее иметь очередь и только 50 исполняющихся
одновременно запросов.
Тоже самое может касаться и бекенда на php, jsp....
6 беременных женщин за месяц не рожают :)
Alexey Rymonin wrote:
Hello Kostya,
Friday, November 9, 2007, 11:15:22 AM, you wrote:
Поможет. Основная беда это то что java.io очень медленно акцептает
соединения.
Для такого кол-ва соединений юзать java.io смерти подобно...
как минимум надо юзать что-нить из nio (во всяком под соляркой можно
напрямую /dev/poll заюзать)... А вообще надо нативные библы
подключать. Не смогу подсказать как это сделать для веблоджика,
подключение нативных либ к томкату под солярой, сразу его переводит в
использование eventports...
Относительно сносно эту задачу решал mod_wl для апача, но там
1. нет сырцов и не полностью ясно как он работает, не всегда так как это
описывает документация.
2. Apache не может держать даже 2000 Keep-Alive соединений. Ему для
каждого нужен процесс/поток
в зависимости от worker/prefork. Точнее он впринципе их держит, но печально.
Максимальный беклог могу поставить 2000, больше игнорирует.
|