第2回勉強会資料 柏木

1,133 views

Published on

ビヨンド第2回勉強会

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,133
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

第2回勉強会資料 柏木

  1. 1. 白いくまもんが、nginx + PHP-FPMの話なので…
  2. 2. 自己紹介  名前: 柏木 宏文  勤務先: 株式会社ビヨンド  生息地: 鹿がいそうな町、法隆寺がある斑鳩町  年齢 29歳  料理がそれなりに好き  黒いくまもんと呼ばれたり呼ばれなかったり  際どいバランスで動作しているプログラムを見る とにやにやする
  3. 3. 最近やった面白そう(?)なこ と  cocos2d-x で socket.io をやってみた  Klab の Prayground ゲームエンジン のソースを覗いてみた  FuelPHP フレームワーク を触ってみた  HipHop-VM をちょっと調べてみた
  4. 4. cocos2d-x って?  cocos2d for iphone を継承して、 C/C++で記述していくゲームエンジン  iPhone, Android でのクロスプラット フォーム開発が可能  そして、とうとう開発版にて、 Socket.IOが実装!! (まだ開発版ですが。。。)
  5. 5. Socket.IOって?  Node.js 上で動作するライブラリ  いろいろなリアルタイム通信技術を隠蔽 し、様々なブラウザで対応する  今現在、最適解に近いモジュールではな いかと個人的には思っています (リアルタイムWEBを実現する上で。)
  6. 6. 作ったのはこんな感じのも の
  7. 7. 作ったのはこんな感じのも の 必要情報を入力して、[Open SocketIO Client ラベル] を押下します [Send Test Message ラベル] を押下すると、 [Message テキスト] の内容をサーバに送信します
  8. 8. ソースはこんな感じ
  9. 9. しかし今日の本題は。。。
  10. 10. 今日お話すること  PHP-FPM  FastCGIって?  PHP-FPM の機能をご紹介  PHP-FPMを動かしてみた  PHP-FPMのご紹介した機能を使ってみた  slowlog の出力  fastcgi_finish_request()  で、PHP-FPMって早いの?  メリット・デメリット
  11. 11. ■ PHP-FPMとは
  12. 12. PHP-FPM  FPM  FastCGI Process Manager  PHP の FastCGI 実装のひとつ  高負荷のサイトで有用な追加機能がある (って、公式サイトに書いてある。。。)  対応バージョン  PHP 5.3.3からバンドル  PHP 5.4.0 から公式サポート  プロトコルは FastCGI  当然ですが。。
  13. 13. FastCGIって?  WEB/APサーバ間で使われるプロトコル  プロセスをメモリ上に永続化  プロセスを使いまわすことによる負荷の軽減
  14. 14. CGIとFastCGIのイメージ
  15. 15. ■ PHP-FPMの機能ご紹介 (一部)
  16. 16. PHP-FPMの追加機能 その 1  slowlogを出力することができる  N秒以上かかるアクセスを検出  N秒時点でのバックトレースも取れる
  17. 17. PHP-FPMの追加機能 その 2  fastcgi_finish_request()  リクエスト終了後の後続処理を実装できる  動画の変換や統計情報の処理などに便利
  18. 18. PHP-FPMの追加機能 その 3  プロセス数を自動調整してくれる  pm = ondemand ○ 暇な時にプロセス数を減らす機能 放置したら、 子プロセスがなくなりました。。
  19. 19. ■ PHP-FPMを動かしてみた
  20. 20. 構成  用意した構成  nginx/1.4.3 ○ すいません、yum インストールの手抜きですm(_ _)m  PHP 5.3.3 ○ すいません、yum インストールの手抜きですm(_ _)m
  21. 21. phpinfo はこんな感じ
  22. 22. ちなみにmod_phpだと。。。
  23. 23. 設定ファイルも一部抜粋  php-fpm 側  listen = /var/run/php-fpm/www.sock  nginx 側  fastcgi_pass unix:/var/run/php-fpm/www.sock; 記載するほどでもないですね、申し訳ありません。。。 細かい話は白いくまもんがしてくれていること信じていますm(_ _)m せっかくなので、 UNIX ドメインソケット を使ってみました!!
  24. 24. とりあえず hello world.  全く問題なくできました。
  25. 25. ■ PHP-FPMのご紹介した機能を使ってみ た
  26. 26. ご紹介した機能を使ってみた 1- 1  slowlogの出力  設定は以下のようにしました。 ○ タイムアウト設定  request_terminate_timeout = 60 ○ slowlogを出力する閾値(秒)  request_slowlog_timeout = 2 ○ slowlogを出力する先  slowlog = /var/log/php-fpm/www-slow.log
  27. 27. ご紹介した機能を使ってみた 1- 2  slowlogの出力  以下のようなプログラムを用意しました
  28. 28. ご紹介した機能を使ってみた 1- 3  slowlogの出力  出てる…!!
  29. 29. ご紹介した機能を使ってみた 1- 4  slowlogのちょっとした不満点  該当ファイルの、一番最初にN秒を超えたも のしかトレースしない。 ※ 全てをトレースするわけではない 完全に調べきったわけではないので、 もしかしたらやり方があるのかも。。。
  30. 30. ご紹介した機能を使ってみた 2- 1  fastcgi_finish_request()  こんなプログラムを用意しました fastcgi_finish_request(); より下のプログラムが、レスポンス完了後に起動するはず。 ※ 出力するファイルは「/var/www/html/ffr.log」
  31. 31. ご紹介した機能を使ってみた 2- 2  fastcgi_finish_request()  出てる…!! 想定どおり、ブラウザに出力されてから5秒後に ログへの出力処理が走りました。
  32. 32. で、PHP-FPMって早いの?
  33. 33. という訳で、ベンチマーク だ!! リクエスト回数:20 リクエスト回数:50 リクエスト回数:100 リクエスト回数:200 リクエスト回数:400 A pache 3005 ミリ秒 7344 ミリ秒 12718 ミリ秒 19524 ミリ秒 41889 ミリ秒 N ginx 3193 ミリ秒 6115 ミリ秒 9401 ミリ秒 17752 ミリ秒 48944 ミリ秒 0 ミリ秒 10000 ミリ秒 20000 ミリ秒 30000 ミリ秒 40000 ミリ秒 50000 ミリ秒 60000 ミリ秒 ab結果 動的コンテンツ Apache Nginx
  34. 34. は、白いくまもんがやってた。 そして、期待した程の効果はなかった …orz
  35. 35. ■ PHP-FPMのメリット・デメ リット
  36. 36. PHP-FPM メリット  PHP公式サポートされていること  公式サポートされているので、安定感がある (安心感も)  ロングサポートが期待できる  Apache + mod_php より気軽に試せる  機能面では、開発者も、構築・運用する人もそれなりに 楽しめそう
  37. 37. PHP-FPM デメリット  実績がすくない  監視系はHTTPの方が既存資産が生かせそう
  38. 38. まとめ  PHP-FPM の実装は普通に使える  実は UNIX Socket 接続と TCP/IP 接続 は、言うほ どの差は無い  運用する人にも、開発する人にもそれなりに目新 しい機能がある  ベンチマークは、もっと時間をかけてやると明確 な差がでるかもしれない。
  39. 39. ご静聴ありがとうございまし た。

×