Как FastCGI работает над веб-сервером (например, Apache 2.2 +)?

Bart Де-Смет превосходный блог имеет 8 серий при выполнении точно, что Вы описываете. Найдите первую часть здесь .

7
задан 3 August 2009 в 13:58
поделиться

3 ответа

Прирост скорости FastCGI по сравнению с обычным CGI заключается в том, что процессы постоянны. например, если у вас есть какие-либо дескрипторы базы данных, которые нужно открыть, вы можете сделать их один раз. То же самое для любого кеширования.

Основное преимущество заключается в отсутствии необходимости создавать новый php / perl / etc. интерпретатор каждый раз, что занимает удивительно много времени.

Если вы хотите, чтобы несколько одновременных подключений обрабатывались, вы должны иметь несколько запущенных процессов FastCGI Processes. FastCGI - это не способ обработки большего количества соединений посредством какого-либо специального параллелизма. Это способ ускорить отдельные запросы, что, в свою очередь, позволит обрабатывать больше запросов. Но да, ты прав,

5
ответ дан 6 December 2019 в 21:17
поделиться

Процессы, порожденные FastCGI, являются постоянными, они не уничтожаются после обработки запроса, вместо этого они «объединяются в пул».

4
ответ дан 6 December 2019 в 21:17
поделиться

В самом деле,

, как видно (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.

Еще раз спасибо, Ура, Эма! : -)

1
ответ дан 6 December 2019 в 21:17
поделиться