第2回勉強会資料 柏木
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
525
On Slideshare
524
From Embeds
1
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 1

http://geechscamp.lovepop.jp 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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