Bart Де-Смет превосходный блог имеет 8 серий при выполнении точно, что Вы описываете. Найдите первую часть здесь .
Прирост скорости FastCGI по сравнению с обычным CGI заключается в том, что процессы постоянны. например, если у вас есть какие-либо дескрипторы базы данных, которые нужно открыть, вы можете сделать их один раз. То же самое для любого кеширования.
Основное преимущество заключается в отсутствии необходимости создавать новый php / perl / etc. интерпретатор каждый раз, что занимает удивительно много времени.
Если вы хотите, чтобы несколько одновременных подключений обрабатывались, вы должны иметь несколько запущенных процессов FastCGI Processes. FastCGI - это не способ обработки большего количества соединений посредством какого-либо специального параллелизма. Это способ ускорить отдельные запросы, что, в свою очередь, позволит обрабатывать больше запросов. Но да, ты прав,
Процессы, порожденные FastCGI, являются постоянными, они не уничтожаются после обработки запроса, вместо этого они «объединяются в пул».
В самом деле,
, как видно (A) в порядке, что насчет (B)? Если я говорю об исполняемых файлах (правильно скомпилированных программах на C / C ++, а не о сценариях типа perl / php / ...), и если мы считаем, что стоимость spwan процесса и стоимость нового подключения к БД пренебрежимо малы, то этот подход (FastCGI) просто своего рода небольшой выигрыш по сравнению с простыми исполняемыми файлами CGI?
Я имею в виду, учитывая, что Linux очень быстро порождает (разветвляет) процесс и если БД работает локально (например, тот же хост MySQL) , время, необходимое для запуска нового исполняемого файла и подключения к БД, практически равно 0. В этом случае, если нечего интерпретировать, только модули Apache C / C ++ будут быстрее этого.
Используя подход FastCGI, вы можете еще более уязвимы для утечек памяти, поскольку процесс не разветвляется / не перезапускается каждый раз ... На этом этапе, если вам нужно разработать свой CGI на C / C ++, не будетНе лучше ли использовать модули старой школы CGI и / или Apache C / C ++ напрямую?
Опять же, я не говорю о скриптах (perl / php / ...), я говорю о скомпилированном CGI.
Еще раз спасибо, Ура, Эма! : -)