Если perl'овый модуль выполняет длительную операцию, например, определяет
адрес по имени, соединяется с другим сервером, делает запрос к базе
данных, то на это время все остальные запросы данного рабочего процесса не
будут обрабатываться.
У меня на одном сервисе около пары сотен коннектов в секунду и при каждом
nginx делает кучу операций в базе данных, причем не на локалхосте.. и
это все работает очень стабильно вот уже четвертый месяц.. так, что
такие выводы весьма субъективные и зависят от многих факторов.
Да, мои рассуждения исключительно субъективные - патамучта таких
конструкций, как ваша, своими руками не строил. Не было необходимости.
Но строил много разных других при участии и\или консультациях Игоря
Сысоева - и потому его словам\сомнениям\советам верю, как говорится, "как
самому себе". И если он говорит что здесь есть такие-то и такие-то
"грабли" - значит, наступания на них следует избегать изначально. И уж
только если без этого ну никак не обойтись - тогда да, надеваем каску и
пробуем силу удара.
Я рад, что в вашем случае perl-хэндлеры успешно ковыряются в БД, но,
скажите - знаете ли вы пределы нагрузочной способности этого вашего
решения?? 200 accesses/sec - для nginx это не такая уж и большая нагрузка.
Если не затруднит вас - проведите, пожалуйста, стресс-тест. Думаю, всем
нам будет интересно, и полезно, обсудить с вами методику и результаты.
Реализовал идею с perl_set. Все отлично получилось. То что надо!
Всем огромное спасибо, проблемму считаю решенной!