2015年12月3日、待ちに待ったPHP7がリリースされました。
PHP7といえば、よくHHVMとのパフォーマンス比較がされています。
WordpressやHello Worldベンチはよく見かけますが、
プロダクション側での実際のパフォーマンスはどうなのでしょう?
凄く凄く気になるところですね!
ということで、このサイトを使って軽くベンチマークを計測してみました。
( *このサイトは元々HHVMで動いているので、HHVM側の計測は容易でした )
ローカルマシン上でVagrant+ Virtual Boxを使って同じ構成のサーバーを2台 用意しました。
1台は HHVM、もう一台はPHP7.0。 違う所は実行環境のみです。
- OS: Ubuntu 14.04.3 VirtualBox ( Vagrant )
- Vuatual Box: 5.0.10 ( Guest addition 込 )
- Memory: 2GB
- CPU: 1 core
- Web Server: nginx 1.8.0
- HHVM: 3.10.1
- PHP: 7.0 ( opcache有効 )
- DB: Mysql 5.6.27 ( 実際のテーブルのデーターを利用しました )
- Redis: 3.0.5 (on Memory Key-Value Store)
- Framework: Lumen 5.1.6 ( Laravelコンポーネントを使ったライトウェイト フレームワーク )
- 共に "composer dump-autoload -o"コマンドで最適化しています
計測ツール
- Apache bench
- Laravel Debugbar
# PPAレポジトリの追加
add-apt-repository ppa:ondrej/php-7.0
apt-get update
# エクステンション等のインストール
apt-get install php7.0-fpm php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-mysql php7.0-phpdbg php7.0-dbg php7.0-gd php7.0-imap php7.0-ldap php7.0-pgsql php7.0-pspell php7.0-recode php7.0-tidy php7.0-dev php7.0-intl php7.0-curl
Redisのエクステンションがまだ用意されていないので、
コンパイル、手動でインストールします。
git clone https://github.com/phpredis/phpredis.git
cd phpredis
git checkout php7
phpize
./configure
make && make install
rm -rf phpredis
コンパイルしたRedisエクステンションのインストール
cd /etc/php/mods-available
# Permissionの問題が出たら手動でredis.iniのファイルを作成して
# extension=redis.soを追加してください
echo "extension=redis.so" > redis.ini
cd /etc/php/7.0/fpm/conf.d/
ln -sf /etc/php/mods-available/redis.ini ./20-redis.ini
cd /etc/php/7.0/cli/conf.d/
ln -sf /etc/php/mods-available/redis.ini ./20-redis.ini
service php7.0-fpm restart
nginxのconfファイルの設定
server {
listen 80;
# ファイルの場所
root /home/vagrant/itBlog/public;
index index.html index.htm index.php;
# ドメイン
#server_name _;
error_page 404 /index.php;
# hhvmの場合は必要
#include hhvm.conf;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ /\.ht {
deny all;
}
# hhvmの場合はこの項目は必要ありません
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
}
インストール時に参照したサイト: Install-php7.md
環境とPHP7の導入は上記の様になります。
次のページでは実際にパフォーマンスを計測します。