PHP-FPMとuWSGI ̶̶ mod_php以外の選択肢を探る hnw 第66回PHP勉強会(2013/03/27) 発表資料 13年3月29日金曜日
自己紹介 @hnw / id:hnw 勤務先:KLab株式会社 カレーとバグが大好物 宣伝:php-timecopというPHP拡張を作りました https://github.com/hnw/php-timecop 13年3月29日金曜日
今日おはなしすること PHP環境の選択肢を紹介 PHP-FPM uWSGI + PHP plugin 動かしてみたよ! メリット・デメリットは? 13年3月29日金曜日
PHP-FPM FPM: FastCGI Process Manager PHP標準のアプリケーションサーバ実装 PHP 5.3.3からバンドル PHP 5.4.0から公式サポート プロトコルはFastCGI 13年3月29日金曜日
FastCGI Webサーバ・APサーバ間で使われるプロトコル Apache・nginx・lighttpdなどがサポート PHP以外の言語ではボチボチ利用される バイナリプロトコル 13年3月29日金曜日
uWSGI Pythonでボチボチ使われているAPサーバ実装 多数の言語に対応(WSGI, PSGI, Rack, ...) embed SAPIを利用したPHPプラグインも提供 PHP界隈での知名度はゼロに近い 13年3月29日金曜日
動かしてみた(1) PHP-FPM 13年3月29日金曜日
動かしてみた(2) uWSGI + PHP plugin 13年3月29日金曜日
動かしてみた(3) Apache + mod_php 13年3月29日金曜日
ミドルウェア構成 対称性からApache+mod_phpの前段にもnginxを入れた HTTP HTTP nginx nginx HTTP FastCGI Apache PHP-FPM mod_php 13年3月29日金曜日
前段のnginxいらなくね? 効用 前段のnginxの同時接続数を大きくできる 後段のAPサーバの同時接続数は下げられる APサーバだけロードバランシングすることも可能 前段をApacheにしても同じ効果が得られる 13年3月29日金曜日
速度の比較 有意な差は出なかった 1並列で500μs程度 10ms台のPHPを動かすなら誤差では? 13年3月29日金曜日
メモリ消費量 起動直後にPHPを叩いてpsコマンドのRSSの値を比較 PHP-FPM : 3MB Apache + mod_php : 5MB uWSGI + PHP plugin : 6.5MB Apacheはチューニングの余地があるはず 13年3月29日金曜日
ここまでのまとめ PHP-FPM、uWSGI + PHP pluginともに正常動作する 速度の差はほぼ無い 1プロセスあたりのメモリ消費量の差も誤差に近い 商用環境で試す人、追試をお願いします 13年3月29日金曜日
PHP-FPMのメリット PHP公式サポートされていること 安定性が期待できる ロングサポートが期待できる 乗っかって後悔する可能性が少なそう 13年3月29日金曜日
PHP-FPMの面白機能(1) slow_logが出せる n秒以上かかるアクセスを検出 n秒時点でのbacktraceも取れる (この機能だけはrootで起動する必要あり) 13年3月29日金曜日
PHP-FPMの面白機能(2) 暇なときにプロセス数を勝手に減らす機能 「pm = ondemand」 10秒程度アクセスが無いと子プロセスが0個になってる 13年3月29日金曜日
PHP-FPMの面白機能(3) fastcgi_finish_request() レスポンスを返した後、PHPの処理が継続できる APCが狂ったときに緊急再起動する機能 動作は未確認、期待通りに動くなら面白いかも 13年3月29日金曜日
PHP-FPMのデメリット 実績が少ない 監視系はHTTPの方が既存資産が生かせそう 13年3月29日金曜日
まとめ PHP-FPMは「普通」に使える実装 性能・安定性など特に不安点は無い Apache + mod_phpより気軽に試せるのは利点 uWSGIでもPHPが動くよ! 普通はPHP-FPMを選ぶ気がします… 13年3月29日金曜日
ご静聴 ありがとう ございました 13年3月29日金曜日

PHP-FPMとuWSGI——mod_php以外の選択肢を探る

  • 1.
    PHP-FPMとuWSGI ̶̶ mod_php以外の選択肢を探る hnw 第66回PHP勉強会(2013/03/27) 発表資料 13年3月29日金曜日
  • 2.
    自己紹介 @hnw / id:hnw 勤務先:KLab株式会社 カレーとバグが大好物 宣伝:php-timecopというPHP拡張を作りました https://github.com/hnw/php-timecop 13年3月29日金曜日
  • 3.
    今日おはなしすること PHP環境の選択肢を紹介 PHP-FPM uWSGI + PHP plugin 動かしてみたよ! メリット・デメリットは? 13年3月29日金曜日
  • 4.
    PHP-FPM FPM: FastCGI Process Manager PHP標準のアプリケーションサーバ実装 PHP 5.3.3からバンドル PHP 5.4.0から公式サポート プロトコルはFastCGI 13年3月29日金曜日
  • 5.
    FastCGI Webサーバ・APサーバ間で使われるプロトコル Apache・nginx・lighttpdなどがサポート PHP以外の言語ではボチボチ利用される バイナリプロトコル 13年3月29日金曜日
  • 6.
    uWSGI Pythonでボチボチ使われているAPサーバ実装 多数の言語に対応(WSGI, PSGI, Rack, ...) embed SAPIを利用したPHPプラグインも提供 PHP界隈での知名度はゼロに近い 13年3月29日金曜日
  • 7.
    動かしてみた(1) PHP-FPM 13年3月29日金曜日
  • 8.
    動かしてみた(2) uWSGI + PHP plugin 13年3月29日金曜日
  • 9.
    動かしてみた(3) Apache + mod_php 13年3月29日金曜日
  • 10.
    ミドルウェア構成 対称性からApache+mod_phpの前段にもnginxを入れた HTTP HTTP nginx nginx HTTP FastCGI Apache PHP-FPM mod_php 13年3月29日金曜日
  • 11.
    前段のnginxいらなくね? 効用 前段のnginxの同時接続数を大きくできる 後段のAPサーバの同時接続数は下げられる APサーバだけロードバランシングすることも可能 前段をApacheにしても同じ効果が得られる 13年3月29日金曜日
  • 12.
    速度の比較 有意な差は出なかった 1並列で500μs程度 10ms台のPHPを動かすなら誤差では? 13年3月29日金曜日
  • 13.
    メモリ消費量 起動直後にPHPを叩いてpsコマンドのRSSの値を比較 PHP-FPM : 3MB Apache + mod_php : 5MB uWSGI + PHP plugin : 6.5MB Apacheはチューニングの余地があるはず 13年3月29日金曜日
  • 14.
    ここまでのまとめ PHP-FPM、uWSGI + PHP pluginともに正常動作する 速度の差はほぼ無い 1プロセスあたりのメモリ消費量の差も誤差に近い 商用環境で試す人、追試をお願いします 13年3月29日金曜日
  • 15.
    PHP-FPMのメリット PHP公式サポートされていること 安定性が期待できる ロングサポートが期待できる 乗っかって後悔する可能性が少なそう 13年3月29日金曜日
  • 16.
    PHP-FPMの面白機能(1) slow_logが出せる n秒以上かかるアクセスを検出 n秒時点でのbacktraceも取れる (この機能だけはrootで起動する必要あり) 13年3月29日金曜日
  • 17.
    PHP-FPMの面白機能(2) 暇なときにプロセス数を勝手に減らす機能 「pm = ondemand」 10秒程度アクセスが無いと子プロセスが0個になってる 13年3月29日金曜日
  • 18.
    PHP-FPMの面白機能(3) fastcgi_finish_request() レスポンスを返した後、PHPの処理が継続できる APCが狂ったときに緊急再起動する機能 動作は未確認、期待通りに動くなら面白いかも 13年3月29日金曜日
  • 19.
    PHP-FPMのデメリット 実績が少ない 監視系はHTTPの方が既存資産が生かせそう 13年3月29日金曜日
  • 20.
    まとめ PHP-FPMは「普通」に使える実装 性能・安定性など特に不安点は無い Apache + mod_phpより気軽に試せるのは利点 uWSGIでもPHPが動くよ! 普通はPHP-FPMを選ぶ気がします… 13年3月29日金曜日
  • 21.
    ご静聴 ありがとう ございました 13年3月29日金曜日