Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP7検証@IDCFクラウド

2,256 views

Published on

2015/10/27 IDCFクラウド meetup LT資料
PHP7 vs PHP5 on IDCFクラウド

Published in: Software
  • Be the first to comment

PHP7検証@IDCFクラウド

  1. 1. PHP7の検証 on IDCFクラウド 2015/10/25 ooi@dropsystem
  2. 2. 試す事 1. PHP5とPHP7のCLI実行による単純な性能比較 2. Webサーバ Apache(mod_php)、nginx、h2o上 でのPHP5とPHP7比較 3. 上の性能が良い組み合わせ上でフレームワーク (silex)での簡単な比較 4. IDCFクラウド S1+PHP7、S2以上+PHPの比較
  3. 3. 目的 1. 安いVMで高速なPHP7(仮定)を利用して上位VM と同等の性能を出してコスト削減を画策する。 ※PHPに興味がない人には無意味な内容です。
  4. 4. まずは • 環境:CentOS7 • IDCFクラウド highcpu.M4 cpu x 2 memory 4GB
  5. 5. 準備 • MySQLサーバはIDCFクラウドのRDB(S1)を利用 • mysqlクライアントだけyumで入れておく • Apache2.4、Nginxはyumで入れる • h2oはソースからインストールする • phpはphpenvでphp5.6.14と7.0.0RC4を入れる
  6. 6. phpバージョンの切り替え $ phpenv global 7.0.0RC4 $ phpenv versions 5.6.14 * 7.0.0RC4 (set by /root/.phpenv/version) $ php -v PHP 7.0.0RC4 (cli) (built: Oct 6 2015 14:25:27) $ which php /.phpenv/shims/php php.ini /.phpenv/versions/{version}/php.ini php-fpm.conf /.phpenv/versions/{version}/etc/php-fpm.conf
  7. 7. peclコマンド phpenvで入れるとpeclコマンドがない。 pecl-buildを入れる git clone https://github.com/berenddeboer/pecl-build.git /.phpenv/plugins/pecl-build memcachedモジュール sudo yum install libmemcached libmemcached-devel phpenv pecl memcached -a php7には対応していない。(php5はphpenv peclでok) php7ブランチがあったのでphp7はphpizeで入れる git clone -b php7 git@github.com:php-memcached-dev/php- memcached.git cd php-memcached/ phpize ./configure make && make install
  8. 8. パフォーマンステスト (test.php) $time_start = microtime(true); $loop = 10000000; for($i=0;$i<$loop;$i++) { $a = rand()/5; $b++; } $timelimit = microtime(true) - $time_start; echo $timelimit . " seconds" . PHP_EOL;
  9. 9. 1)単純な計算をコマンドで実行(1000万回ループ) 1. PHP 5.6.14 $ php test.php 7.0333759784698 seconds ② php7 $ php test.php 0.93678998947144 seconds php7が7倍高速!!
  10. 10. apache + mod_phpreq/sec 0 1,000 2,000 3,000 4,000 5,000 echo phpinfo 1000 100万 1000万 434 3,688 913 4,233 03 1,451 738 2,949 php5 php7 ab -c 100 -n 10000
  11. 11. h2o + php-fpmreq/sec 0 2,000 4,000 6,000 8,000 10,000 echo phpinfo 1000 100万 1000万 434 6,500 1,213 9,888 03 1,851 895 5,006 php5 php7 ab -c 100 -n 10000
  12. 12. nginx + php-fpmreq/sec 0 1,800 3,600 5,400 7,200 9,000 echo phpinfo 1000 100万 1000万 438 6,416 1,173 8,172 03 1,982 983 5,987 php5 php7 ab -c 100 -n 10000
  13. 13. webサーバ上でのまとめ •Apache上ではphp7が2倍以上高速 •h2o(php-fpm)でもphp7の方が1.5倍程高速 • 且つ、Apache(mod_php)より2倍近く高速 • mod_php5よりh2o+php7の方が3倍近く高速 •nginx(php-fpm)でもphp7の方が高速 • 且つ、Apache(mod_php)より2倍近く高速 • 性能的にはh2oとの組み合わせとだいたい同じくらい • (純粋にfast-cgiの性能が表面化しているだけか) • 今回はAPI実装に使えるかを確認したいので、h2oではなく安定したnginxを採用
  14. 14. nginx + php-fpm + Silexreq/sec 0 200 400 600 800 easy 792 183 php5 php7 ab -c 50 -n 1000
  15. 15. 実験 S1 & nginx+php7 VS M4 & nginx+php5 どちらも同じsilexで実装したAPIをabで計測する。 (外部ネットワークから) 前の実験でphp7の方がphp5より3倍近く高速だったので S1&nginx+php7がM4より性能が出て欲しい。 ただし今回の実験ではRDBへの接続ロジックを入れています。2,3個のテーブルを参照してます。 S1(1CPU 0.8GHz 1GB RAM 500円) M4(2CPU 2.6GHz 4GB RAM 9,500円)
  16. 16. silex+RDB接続な簡単な login API
  17. 17. highcpu.M4 • highcpu.M4で • php5.6.14とphp7でapache-bench
  18. 18. php7 x 5回
  19. 19. php5 x 5回
  20. 20. M4 x 5回 平均 php7 php5 PHP7速いです。
  21. 21. S1 • S1で • php5.6.14とphp7でapache-bench • cpuの数に合わせてnginxはチューニング
  22. 22. php7 x 5回
  23. 23. php5 x 2回 遅いので
  24. 24. S1 x 5回 平均 php7 php5 M4の1/3以下の性能になりますね
  25. 25. php7+S1 vs php5+M4 php7+S1 php5+M4 作戦失敗! でも、惜しい!! S2 1700円、S4 5600円には勝てそうです。 あれ?時間間違っててまだ余裕あるのでS4試してみる
  26. 26. S4 • S4 (standard.S4 1CPU 2.4G 4GB RAM) • 5,600円 • php5.6.14とphp7でapache-bench
  27. 27. php7 x 5回
  28. 28. php5 x 5回
  29. 29. S4 x 5回 平均 php7 php5 php7はM4に近い高性能を保った しかし。。。
  30. 30. php7+S1 vs php5+S4 php7+S1 php5+S4 php5+M4 大成功!! S1 500円がS4 5,600円に勝てました!! フー!! ※実戦レベルのアプリで試すとS1ではメモリ不足で死ぬかも。
  31. 31. まとめ • php7速いです • 既存フレームワークも大体動くと思います • 新規PHP案件はPHP7でコストダウンしましょう • PhalconがPHP7対応したらまた試してみます
  32. 32. ご静聴ありがとうございました。 ドロップシステムはサーバサイドエンジニ アを募集しております。 とても自由な環境だと思います。 アル中、タバコ廃人もウェルカムです。 ネットワーク系、ゲーム系、どしどしご応募ください。

×