Javaで実装されたPHPの実行環境Quercusのポテンシャルが高すぎる件

[snap url=http://quercus.caucho.com/]グリーで働き始めてはや2週間、社員の年齢層が比較的若いせいか、陽気な人が多く楽しく過ごしております。
Bootcampと呼ばれる実装研修ではEthnaを始めとしたPHPのフレームワークでキャッキャウフフしています。

PHPまみれの毎日ですが、意外なところでRubyやnode.jsが使われていたりHaskell使おうみたいな話もあったりと、環境やアーキテクチャによって様々な言語が使われているようです。
Java大好き人間としてはJavaでなんかやったるしかないだろう、ということで個人的な実験ですがJavaで実装されたPHPの実行環境Quercusを使ってみたところ、あまりにハイパフォーマンスでビビったので皆様にご紹介です。

Quercusってなんぞ

Quercus(くえるかす)はRasinというアプリケーションサーバーでお馴染みのCauchoが開発したPHPの実行環境です。ライセンスはGPL。
warとして配布されているのでTomcatを始めとしたRasin以外のアプリケーションサーバーでも動きます。商用のRasin ProfessionalではPHPスクリプトをコンパイルすることができ、更にパフォーマンスをあげることができるそうです。

互換性が心配になりますが、公式にMediaWikiやWordpressといったアプリケーションの動作が確認されているので、そうそう変な書き方しなければ大体のアプリケーションは動くのではないでしょうか。

AWSのセットアップ

AWSのマイクロインスタンスにyumでphp/httpd/tomcat7あたりをインストールして比較しました。
セキュリティグループの設定で80と8080のポートを開けておきます。

yum update -y
yum install -y php php-pear tomcat7
pear channel-discover pear.ethna.jp
pear install -a ethna/ethna-beta

cd /var/www/html
ethna add-project sandbox
cd /usr/share/tomcat7/webapps
wget http://caucho.com/download/quercus-4.0.25.war
service tomcat7 start
cd quercus-4.0.25
cp -Rp /var/www/html/sandbox ./quercus-4.0.25

service httpd start

これで、

http://なんとかかんとか.amazonaws.com/sandbox/www/

http://なんとかかんとか.amazonaws.com:8080/quercus-4.0.25/sandbox/www/

のようなURLでそれぞれアクセスできるようになります。

JMeterで計測

JMeterでベンチマークとってみました。ベンチマークの取り方に詳しくないので「こうやると正確だよ!」「こういう比較するといいよ!」ってのがあれば教えてください><

とりあえずスレッド数10、Ramp-Up期間1秒、ループ回数100でそれぞれ試してみました。すると、

  • httpd 24.0[requests/src]
  • Quercus 87.0[requests/sec]

こんな結果に・・・!Quercusさんパネェっす!

とは言えインストールしたままのPHPなんてフツーは使わんですよね、せめてAPCでも入れてみましょう。

yum install php-pecl-apc
service httpd restart

再び計測。

  • httpd(APC) 59.7[requests/sec]

うーむ、やはりQuercusのが早い。

所感

とまあどちらもチューニングせずの、ブログに書くには雑すぎるベンチマークでしたが、Quercusのポテンシャルの高さを少しは感じられたかと思います。PHP/httpdのチューニング、Java/Tomcatのチューニングをちゃんと施してのベンチマークも取ってみたいですね。nginx/FastCGIの組み合わせはまだまだパフォーマンス出るでしょうし、Tomcat以外のアプリケーションサーバーも実験の価値ありですね。

とは言えQuercusを使うということは単なる高速化だけではなく、JVM上で動いているということを忘れてはいけません。JavaOne Tokyoで感じた方も多いと思いますがOracleのJavaへの本気度はマジでしょう、まだまだJavaはメインストリームを突っ走るはず。

過去のJavaの資産が活用できるのはもちろんのこと、JDBCコネクションプールや、Fork/Joinを始めとしたマルチコア/マルチプロセッサ対応、JavaEE7のマルチテナント、クラウド化や各種アプリケーションサーバーの強力な負荷分散・フェイルオーバーの恩恵を受けられることは運用の面でも大きなアドバンテージになるのではないでしょうか。

意外とサクっと試せるので、興味がある方はぜひ試してみてください。

「Javaで実装されたPHPの実行環境Quercusのポテンシャルが高すぎる件」への1件のフィードバック

  1. 通りすがりでコメントします。

    HTTPDとTomcatで比較されていますが、最大同時接続数は同じに制限されていますでしょうか?
    mod_phpを使った場合、HTTPDのプロセスあたりのメモリ使用量がかなり大きいので、制限されていない場合スワップインアウト頻発でろくに速度が出ません。メモリとの兼ね合いになるかと思いますが、どちらも最大10接続くらいに制限してテストしてみると正しい違いが見えると思います。

    ちなみに、私がテストしたときはAPC>Quercus>=HTTPDといった感じでした。
    (abコマンドで軽くテストしただけなのでもう少し更新処理のあるテストをしてみないと評価はできません。)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>