[PHP-users 12988] Re: fastcgi について

Youichi Iwakiri php-users@php.gr.jp
Tue, 04 Feb 2003 16:47:48 +0900


いわきりです

Osamu Shigematsu wrote in <20030204144147.4297.M5ISSIGE@mr.hitachi-medical.co.jp> :
># この件を調べていたときに、昔の Iwakiri さんの Perl vs PHP の
># ベンチを見つけました。:)

誤解があるといけないので、比較対照は、Perl(FastCGI版) vs mod_phpです。
土俵の違う物を比較するとフェアーでは、無いので :)
おまけで、Perl/CGIの参考測定値も取りましたが、
動作原理から言えばPerl(FastCGI版)の方が早いはずだったのですが、
ほぼ引き分けでした。

>この件、configure script を切り替えていろいろ試してみたいと思います。

個人的に興味のある部分を書いておきますので余裕があれば宜しく
お願いします。

予想|    Server            |RequestLoop|ScriptCache|Persistant connect|
----+----------------------+-----------+-----------+------------------|
  1 |Perl(FastCGI)         |    Yes    |    Yes    |       Yes        |
  2 |Perl(Apache::Registry)|           |    Yes    |       Yes        |
  2 |PHP(mod_php)+PHPA     |           |    Yes    |       Yes        |
  2 |PHP(mod_php)+APC      |           |    Yes    |       Yes        |
  3 |PHP(mod_php)          |           |           |       Yes        |
  3 |PHP(fastcgi)          |           |           |       Yes        |
  3 |Perl(Apache::PerlRun) |           |           |        ?         |
  4 |Perl(CGI)             |           |           |                  |
  4 |PHP(CGI)              |           |           |                  |

上位へ行けば行くほど速いハズなんですけど、検証しきれていません。
予想に書いた数字が速さのつもりです。同じ数字は、上下関係なく同程度と
思っています。

fastCGIの利点は、プログラム自体がリクエスト待ちループ状態になるため
他の起動オーバーヘッド等が一切掛かりません。しかし、PHP(FastCGI)は、スクリプト
を常駐させる形式では無く、phpインタープリタ自体を常駐化させるだけですので
スクリプトの読み込み/コンパイルといったオーバーヘッドはPHP(mod_php)と
同様に発生します。mod_phpとmod_fastcgiの違いは、Apacheのプロセスサイズを
減らせる事、常駐させるプロセス数を制限できることで、データベース等との
持続的接続数を明確に固定できる点あたりでしょうか。また、他サーバに
phpスクリプトを処理させる事もできそうですね。(まだ、ちゃんと動作しないような
事が、sapi/cgi/READMEFastCGIに書いてありますけど)

静的コンテンツ( .html/.txt等) と動的コンテンツ(.php)のリクエスト数の
比率によって、PHP(FastCGI)とPHP(mod_php)の性能に逆転が見られるか等を
調べて貰いたいなぁと、無責任に言っておきます :)

-- 
Youichi Iwakiri