В чем разница между fastcgi и fpm? - PullRequest
107 голосов
/ 24 декабря 2010

Я пытаюсь установить php с fpm на macports. Я где-то читал, что fpm означает диспетчер процессов FastCGI. Означает ли это, что fastcgi и fpm одинаковы? Если они одинаковы, то почему у нас есть два разных варианта macports для php "php5 + fastcgi" и "php5 + fpm"

Ответы [ 2 ]

88 голосов
/ 24 декабря 2010

FPM - менеджер процессов для управления FastCGI SAPI (Server API) в PHP.

По сути, это заменяет необходимость чего-то вроде SpawnFCGI .Он порождает дочерние элементы FastCGI адаптивно (то есть запускает больше, если этого требует текущая нагрузка).

В противном случае между ним и FastCGI нет большой разницы в работе (конвейер запросов от начала запроса до конца одинаков).Это просто для того, чтобы упростить его реализацию.

50 голосов
/ 16 августа 2011

То, что говорит Энтони, абсолютно правильно, но я хотел бы добавить, что ваш опыт, скорее всего, покажет гораздо лучшую производительность и эффективность (не из-за fpm -vs- fcgi, а скорее из-за реализации вашего httpd).

Например, у меня была четырехъядерная машина, работающая lighttpd + fcgi, гудящая хорошо. Я перешел на 16-ядерную машину, чтобы справиться с ростом, и взорвались две вещи: использование оперативной памяти и ошибки сегмента. Я обнаружил, что перезапускаю lighttpd каждые 30 минут, чтобы поддерживать работу сайта.

Я переключился на php-fpm и nginx, и использование оперативной памяти сократилось с> 20 ГБ до 2 ГБ. Сегфаулты тоже исчезли. Проведя некоторые исследования, я узнал, что lighttpd и fcgi плохо ладят на многоядерных машинах под нагрузкой, а также в некоторых случаях возникают проблемы с утечкой памяти.

Это из-за того, что php-fpm лучше, чем fcgi? Не совсем, но то, как вы подключаетесь к php-fpm, кажется намного более эффективной, чем то, как вы служите через fcgi.

...