web-dev-qa-db-ja.com

fastcgiとfpmの違いは何ですか?

Macportsにphpをfpmでインストールしようとしています。 fpmがFastCGIプロセスマネージャーを意味することをどこかで読みました。それはfastcgiとfpmが同じということですか?それらが同じ場合、なぜphpに2つの異なるmacportsバリアント、つまり"php5 + fastcgi""php5 + fpm"があるのですか

107

FPM は、PHPでFastCGI SAPI(サーバーAPI)を管理するプロセスマネージャーです。

基本的に、 SpawnFCGI のようなものの必要性を置き換えます。 FastCGIの子を適応的に生成します(現在の負荷で必要な場合は、より多くの起動を意味します)。

それ以外の場合、FastCGIとFastCGIの動作に大きな違いはありません(要求の開始から終了までの要求パイプラインは同じです)。実装を簡単にするためだけにあります。

89
ircmaxell

アンソニーが言うことは絶対に正しいですが、あなたの経験がパフォーマンスと効率を大幅に改善する可能性が高いことを付け加えたいと思います(fpm- vs -fcgiではなく、httpdの実装によります)。

たとえば、lighttpd + fcgiがうまく動作しているクアッドコアマシンがありました。成長に対応するために16コアマシンにアップグレードすると、2つのことが爆発しました。RAM使用率とセグメンテーション違反です。ウェブサイトを維持するために30分ごとにlighttpdを再起動していることに気付きました。

Php-fpmとnginxに切り替えたところ、RAMの使用量が20GBを超えて2GBに減少しました。セグメンテーション違反もなくなりました。いくつかの調査を行った後、lighttpdとfcgiが負荷のかかったマルチコアマシンでうまく動作せず、特定のインスタンスでメモリリークの問題があることを学びました。

これは、php-fpmfcgiよりも優れているためですか?完全ではありませんが、howphp-fpmにフックすることは、fcgiを介してサービスを提供する方法よりもずっと効率的です。

51
spacemonkey