Яка різниця між fastcgi та fpm?


117

Я намагаюся встановити php з fpm на macports. Я десь прочитав, що fpm означає FastCGI-менеджер процесів. Це означає, що fastcgi та fpm однакові? Якщо вони однакові, то чому ми маємо два різні варіанти macports для php, а саме "php5 + fastcgi" та "php5 + fpm"

Відповіді:


94

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

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

В іншому випадку між ним і FastCGI не існує великої різниці в роботі (конвеєр запиту від початку запиту до кінця однаковий). Це просто там, щоб полегшити його реалізацію.


8
Ключовою перевагою php-fpm є те, що один кеш APC може бути спільним для декількох процесів. З fcgid кеш APC - це процес. Використання fpm може призвести до значної економії пам’яті, що дозволяє використовувати цю збережену пам’ять для нерестування більшої кількості процесів та збільшення трафіку.
cam8001

25
@ cam8001: це абсолютно не так. Ви можете встановити, SpawnFCGIскільки процесів для нерестування та кількість дітей PHP на процес. Таким чином, нерестовий процес 1 PHP, на 100 дітей - це те саме, що і використовувати FPM зі 100 дітьми ... Однак, справжнє зворотне. Якщо FPM загине (без збитків, що завгодно), весь ваш робітник гине. У SpawnFCGI, якщо один з процесів вмирає, решта може залишитися живою ... Тож не ясно - краще-краще-ніж-інше. Різні підходи. FPM рекомендується не з технічних причин, а тому, що він підтримується уздовж бічного ядра (в ньому насправді) ...
ircmaxell

56

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

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

Я перейшов на php-fpm та nginx, і використання оперативної пам’яті впало з> 20 ГБ до 2 ГБ. Зникли також і сегменти. Провівши деякі дослідження, я дізнався, що lighttpd та fcgi не добре ладяться на багатоядерних машинах під навантаженням, а також мають проблеми з витоком пам'яті в певних випадках.

Це через php-fpmте, що краще fcgi? Не зовсім, але те, як ви підключитесь, php-fpmздається, ціла хеккува набагато ефективніша, ніж те, як ви обслуговуєте fcgi.


8
Чи існують такі питання приблизно до (квітня 2017 року)?
Лорд Лох.

1
Будь-які оновлення щодо використаної вами версії lighttpd та fpm рекомендуються, будь-які оновлення згаданих проблем, які все ще з’являються (червень 2018 року), також корисні для громади.
Іма

0

Запуск PHP як CGI означає, що ви в основному повідомте своєму веб-серверу про розташування виконуваного файлу PHP, а сервер запускає цей виконуваний файл

тоді як

PHP FastCGI Process Manager (PHP-FPM) - це альтернативний демон FastCGI для PHP, який дозволяє веб-сайту обробляти великі навантаження. PHP-FPM підтримує пули (працівники, які можуть відповідати на запити PHP) для цього. PHP-FPM швидше, ніж традиційні методи на основі CGI, такі як SUPHP, для багатокористувацьких PHP-середовищ

Однак є і плюси і мінуси обох, і їх слід обирати відповідно до конкретного випадку використання.

Я знайшов інформацію на цьому посиланні для fastcgi vs fpm дуже корисною для вибору, який обробник використовувати в моєму сценарії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.