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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

第2回勉強会資料 柏木

450
views

Published on

ビヨンド第2回勉強会

ビヨンド第2回勉強会

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
450
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

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. ご静聴ありがとうございまし た。