mod_fcgid: многопоточный FastCGI сейчас или в будущем?
Факт пока
Согласно " mod_fcgi НЕ является заменой для mod_fastcgi" и " Проблемы с mod_fcgid и многопоточным приложением FastCGI", mod_fcgid
, не предназначен для того, чтобы серверы FastCGI могли обрабатывать несколько запросов одновременно, т. е. не рассчитан на многопоточность серверов FastCGI.
Бывший говорит:
Они оба поддерживают опубликованный протокол "FastCGI", но способ управления их серверами FastCGI значительно отличается. mod_fcgid быстро удаляет серверы FastCGI и запускает новые.
Последний говорит:
кажется, что mod_fcgid не знает о том факте, что мой сервер многопоточный и способен обрабатывать более одного запроса.
Это всего лишь две цитаты среди других, есть и другие.
Последовательный выпуск
Потоки - это не только сохранение процессора и памяти, что позволяет избежать накладных расходов на создание нового процесса (известно, что создание потока легче, чем создание процесса), и это может быть уменьшено производительностью оборудования или ОС; это также логичный вопрос, который менее легко смягчить: потоки принадлежат одному и тому же процессу, это не только производительность, но и логика, напр. процесс не может разделить то, что могут разделить потоки, так как процесс выполняется изолированно (по модулю IPC, но это не то же самое).
По крайней мере, по этой логической причине может возникнуть вопрос о многопоточном сервере FastCGI. Сервер FastCGI может содержать контекст (который может быть большим и дорогим для совместного использования между процессами), который является глобальным для всех обработчиков запросов, когда он спроектирован как многопоточный сервер. Формирование нового процесса для каждого одновременного запроса больше не позволяет обеспечить общий контекст.
Вопрос
Верны ли две приведенные выше цитаты (одна датирована 2011 годом, а другая 2010 годом)? Я искал в Интернете по этой теме, но не смог найти ничего актуального. Если это все еще верно, то всегда ли это будет правдой или есть ожидаемый план mod_fcgid
, чтобы знать о многопоточных серверах FastCGI и признать, что они могут быть предназначены для обработки нескольких одновременных запросов?
1 ответ
Я не могу ответить на ваши точные вопросы о mod_fcgid, но Apache продвинулся дальше, и сейчас в Apache 2.4 предпочтительным методом является использование mod_proxy_fcgi, http://httpd.apache.org/docs/trunk/mod/mod_proxy_fcgi.html.
Он обрабатывает несколько одновременных запросов. Обычно вы можете передавать запросы обработчику php-fpm.