Cakephp1.2finalとrc3のパフォーマンス比較 on MacOS X 続編
CakePHPのパフォーマンステストに関する続編です。Macに関することなのであまりCakeとは関係ない内容が多いです。Cakeと関係あるのはAPCをONにしてパフォーマンステストした結果だけ。
前回の記事
http://d.hatena.ne.jp/cakephper/20090101/1230795414
で、MacのPHPで下記のエラーにより、APCが有効にならないと書いたが、解決しました。
PHP Startup: Unable to load dynamic library apc.so (null) in Unknown on line 0
色々とアドバイスをくれたMASA-Pさんありがとうございました。
結論から言うと、コンパイルしたAPC.soファイルはx86の32bit用で、自分のMacbookの64bit環境に適していない状況でした。
libjpegを自前でコンパイルする際に参考にしたサイトで、configureの前にx86_64用の記述を書いていたので、それにピンと来てAPCのコンパイルでも試してみたらいけました。
とりあえず、下記のようにapcのconfigureを実行しました。
MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --enable-apc
重要なのは-arc x86_64の箇所です。
これでmakeしたsoファイルをfileコマンドで見ると、ちゃんとx86_64対応という表示になりました。
$ file /usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so /usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so: Mach-O universal binary with 4 architectures /usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so (for architecture ppc7400): Mach-O bundle ppc /usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so (for architecture ppc64): Mach-O 64-bit bundle ppc64 /usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so (for architecture i386): Mach-O bundle i386 /usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
ということで、再度Macの環境でAPCを有効にして計測してみました。
まずは、APCを有効にしていない場合は、前回の記事と同じように、RC3, final共に下記のような結果となりました。
CakePHP1.2 RC3 22req/sec CakePHP1.2 final 22req/sec
そしてAPCを有効にした場合は、下記のようになりました。結果としてrc3とfinalではパフォーマンスの差はないようです。
CakePHP1.2 RC3 70req/sec CakePHP1.2 final 70req/sec
APCは、APCのモジュールをダウンロードして、tarを展開したディレクトリに遷移し、下記のようにインストールしました
phpize MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --enable-apc make make test make install
最後に、php.iniで下記のように追記し、Apacheを再起動すればOKです
extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613/" extension=apc.so apc.enabled=1 apc.shm_segments=1 apc.shm_size=32 apc.ttl=7200 apc.user_ttl=7200 apc.include_once_override=1 apc.enable_cli=1