Was ist der Unterschied zwischen fastcgi und fpm?

Lesezeit: 3 Minuten

Benutzer-Avatar
Deepan Chakravarthy

Ich versuche, PHP mit fpm auf Macports zu installieren. Ich habe irgendwo gelesen, dass fpm FastCGI-Prozessmanager bedeutet. Bedeutet das, dass fastcgi und fpm gleich sind? Wenn sie gleich sind, warum haben wir dann zwei verschiedene Macports-Varianten für PHP, nämlich
“php5 +fastcgi” und
“php5 +fpm”

Benutzer-Avatar
ircmaxell

FPM ist ein Prozessmanager zur Verwaltung der FastCGI SAPI (Server API) in PHP.

Im Grunde ersetzt es die Notwendigkeit für so etwas SpawnFCGI. Es spawnt die FastCGI-Kinder adaptiv (was bedeutet, dass mehr gestartet werden, wenn die aktuelle Last dies erfordert).

Ansonsten gibt es keinen großen Betriebsunterschied zwischen FastCGI (die Anforderungspipeline vom Beginn der Anforderung bis zum Ende ist dieselbe). Es ist nur dazu da, die Implementierung zu vereinfachen.

  • Ein wesentlicher Vorteil von php-fpm besteht darin, dass ein APC-Cache von mehreren Prozessen gemeinsam genutzt werden kann. Bei fcgid ist der APC-Cache pro Prozess. Die Verwendung von fpm kann zu großen Speichereinsparungen führen, sodass Sie diesen eingesparten Speicher verwenden können, um mehr Prozesse zu erzeugen und mehr Datenverkehr zu bedienen.

    – cam8001

    18. Juni 2013 um 16:41 Uhr

  • @cam8001: das stimmt überhaupt nicht. Du kannst einsteigen SpawnFCGI wie viele Prozesse erzeugt werden sollen und wie viele PHP-Kinder pro Prozess vorhanden sind. Das Spawnen eines PHP-Prozesses mit 100 untergeordneten Elementen ist also dasselbe wie die Verwendung von FPM mit 100 untergeordneten Elementen … Das Gegenteil ist jedoch der Fall. Wenn FPM getötet wird (segfault, was auch immer), stirbt Ihr gesamter Arbeiter. Wenn in SpawnFCGI einer der Prozesse stirbt, kann der Rest am Leben bleiben … Es ist also nicht klar, dass einer besser ist als der andere. Unterschiedliche Ansätze. FPM wird nicht aus technischen Gründen empfohlen, sondern weil es neben dem Kern gepflegt wird (eigentlich darin) …

    – ircmaxell

    18. Juni 2013 um 16:47 Uhr

Benutzer-Avatar
Weltraumaffe

Was Anthony sagt, ist absolut richtig, aber ich möchte hinzufügen, dass Ihre Erfahrung wahrscheinlich eine viel bessere Leistung und Effizienz zeigen wird (aufgrund nicht fpm-vs-fcgi sondern mehr auf die Umsetzung Ihrer httpd).

Zum Beispiel hatte ich eine Quad-Core-Maschine am Laufen lighttpd + fcgi schön mitsummen. Ich habe auf einen 16-Core-Rechner aufgerüstet, um mit dem Wachstum fertig zu werden, und zwei Dinge sind explodiert: RAM-Nutzung und Segfaults. Ich fand mich neu starten lighttpd alle 30 Minuten, um die Website aufrechtzuerhalten.

Ich wechselte zu php-fpm und nginx, und die RAM-Nutzung sank von > 20 GB auf 2 GB. Segfaults verschwanden ebenfalls. Nachdem ich einige Nachforschungen angestellt hatte, erfuhr ich, dass lighttpd und fcgi auf Multi-Core-Rechnern unter Last nicht gut miteinander auskommen und in bestimmten Fällen auch Probleme mit Speicherlecks haben.

Liegt das daran php-fpm besser sein als fcgi? Nicht ganz, aber wie du hakt dich ein php-fpm scheint eine ganze Menge effizienter zu sein als die Art und Weise, wie Sie über dienen fcgi.

  • Sind solche Probleme bis etwa (April 2017)?

    – Herr Loh.

    31. März 2017 um 19:14 Uhr


  • Alle Aktualisierungen der von Ihnen verwendeten Version von lighttpd und fpm werden empfohlen, alle Aktualisierungen der erwähnten Probleme, die noch auftreten (Juni 2018), sind ebenfalls hilfreich für die Community.

    – Ima

    10. Juni 2018 um 6:23 Uhr

Das Ausführen von PHP als CGI bedeutet, dass Sie Ihrem Webserver im Grunde den Speicherort der ausführbaren PHP-Datei mitteilen, und der Server führt diese ausführbare Datei aus

wohingegen

PHP FastCGI Process Manager (PHP-FPM) ist ein alternativer FastCGI-Daemon für PHP, der es einer Website ermöglicht, anstrengende Lasten zu bewältigen. PHP-FPM verwaltet Pools (Worker, die auf PHP-Anfragen antworten können), um dies zu erreichen. PHP-FPM ist für Mehrbenutzer-PHP-Umgebungen schneller als herkömmliche CGI-basierte Methoden wie SUPHP

Es gibt jedoch Vor- und Nachteile für beide und man sollte je nach seinem spezifischen Anwendungsfall wählen.

Ich habe Informationen zu diesem Link für gefunden fastcgi gegen fpm sehr hilfreich bei der Auswahl des in meinem Szenario zu verwendenden Handlers.

1359030cookie-checkWas ist der Unterschied zwischen fastcgi und fpm?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy