ホーム > タグ > php-fpm

php-fpm

munin php-fpm plugin

PHP-FPMの( ´ω`)統計

muninで統計取っておりマウス。
PHP-FPMをきちんと使い始めたのでプラグインを入れることにしました。
いまいちメモリ使用量とかプロセス数がどのくらい必要なのかとか見えないので。
プラグインはGitHubから持ってきます。作者さんありがとう。

https://github.com/tjstein/php5-fpm-munin-plugins

cloneしてシンボリックリンク張るだけです。
FPM側ではステータスを表示するように設定します。

pm.status_path = /fpmstatus

だけ。パス名は任意ですがmunin-node側の設定で使います。
Webサーバー側でPHPがハンドリング出来るようにします。
うちはApacheHTTPDなのでApacheの設定。


SetHandler “proxy:unix:/var/lib/php/sock/php-fpm.sock|fcgi://php-fpm/”
Require ip 127.0.0.1

FCGIの書き方やアクセス制限については適宜変更ということで。
最後にmunin-node側の設定。envを設定します。

[phpfpm_*]
env.url http://127.0.0.1/fpmstatus
env.ports 80
env.phpbin php-fpm
env.phppool hoge

スクリプトでは設定したプロセス名とプール名で、ps | grep しています。

スクリプトの内容ですが、FPMの以下の値とpsで取得した値を使用しています。
accepted conn – the number of request accepted by the pool;
pool – the name of the pool;
process manager – static or dynamic;
idle processes – the number of idle processes;
active processes – the number of active processes;
total processes – the number of idle + active processes.

・Accepted Connections:ステータス内のaccepted connの値。
・Average Proccess Size:プロセス毎のメモリ使用量/プロセス数。プロセスあたりの平均メモリ使用量ですかね。
・Memory Usage:総メモリ使用量。
・Processes:プロセス数。
・Status:idle processes、active processes、total processesの値。

んー、思ったよりメモリ食ってんなー( ´ω`)

  • コメント(閉): 0
  • トラックバック(閉): 0

FPM三度

つか何回目かわからぬ( ´ω`)

以下の状況でab実施すると無反応になるのに気がついたのでやったことメモ。

  • Apache2.4.23(ビルド)
  • nghttp2 1.15.0(ビルド)
  • mod_http2 1.7.1(ビルド)
  • mod_brotli 0.3.0(ビルド)
  • PHP7.0.11(ビルド)
  • Mariadb 5.5.50(RPM版)
  • WordPress 4.6.1(素)

mod_proxy_fcgi で php-fpm につないでいます。
socketでもTCPでも無反応になります。

[proxy_fcgi:error] [pid 9645:tid 140231782143744] (70007)The timeout specified has expired

です。

  • ab -c1 -n1 でもダメ
  • http でも https でもダメ
  • h2 でも HTTP1.1 でもダメ
  • nghttp2を色々入れ替えてもダメ
  • mod_http2を色々入れ替えてもダメ
  • ApacheHTTPDを色々入れ替えてもダメ

まあひどい(´・ω・`)
だんだん面倒になってきたのでバージョンの入れ替えは途中でやめました。

ちなみに、比較した動く環境は

  • CentOS7
  • Apache2.4.6(RPM版)
  • PHP7.0.11(ビルド)/5.6.14(RPM版)

です。http2はありません。

色々試したところ、必要条件は

  • Apache2.4がhttp2 enableである

ではなかろうかと言うところまで来ました。

  • Apache2.4.23 –disable-http2付き

で、症状出なくなりました。
mod_http2を外せばよかろうと思って外したのですがそれではダメで
–disable-http2をつけてビルドしたものは大丈夫でした。
勿論、http2は使えなくなり、結果動く環境と似た感じになりました。

・・・が。
しばらくするとまた無反応(´・ω・`)ぐぬぬ
モジュール外してもダメな状況と合いますし、やっぱ原因は違うねと。

ソケットでつなぐ方をやりたかったので
netstat でソケット状況を見ていますとなぜか減らない。

pm = static
pm.max_children = 2
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 2
pm.max_requests = 10000

なので、あっても2個なのではなかろうかと(実際はプロセスが2個、ソケットはLISNINGが1個になる)。
12個ぐらいから減らないのですね。状態は CONNECTED。
この状態でab実行しても無反応なわけです。
CONNECTEDってことはつながりっぱなしってことですから、

<Proxy "fcgi://localhost/" disablereuse=off max=2>

ここかなあと。接続使い回し設定です。

disablereuse=on に(検証用に古い書き方しています)して使い回さないようにします。

果たして上手くいきましたヽ(´▽`)ノ
HTTP2も関係無かったので使えるように戻しました。

さて、この設定は動いているものからコピってきたものです。
では動いているものはなぜ動いていたのでしょうか。
動いている方でソケットの数をwatchしていくと、負荷終了後はしっかり減っていっています。
どうも設定を無視しているようです(´・ω・`)がふ

とまれPHP-FPMには使ったらあかんてことですね。

  • コメント(閉): 0
  • トラックバック(閉): 0

ホーム > タグ > php-fpm

Twitter
sssc.cc
Feed

ページの上部に戻る