PHP BLT #6 でphp-fpmのチューニングについてお話しました #phpblt

LINEで送る
Pocket

昨夜、2/22(水)に、勤務先のメルカリにて、PHP BLT #6が催されました。僕は、今回は発表に加え、司会をしておりました。

当日の様子: 「PHP BLT #6 #phpblt – Togetterまとめ

発表内容

結論は、php-fpmのプロセス数は固定でCPUコア数の2倍程度にセットしとくといいよ、というものです。

最近、php-fpmでPHPを実行されている人が増えていると聞きます。会場でもほとんどの方が利用経験がありました。僕は前職はITインフラ系のエンジニアでしたが、その経験を踏まえて、php-fpmをデフォルトで利用することから一歩進められるひとつのきっかけとなればと思い、今回の発表に至りました。

php-fpmは2vCPU程度の小さなインスタンスだと、正直デフォルトでもいじっても大きなパフォーマンス差は出ないことがほとんどです。しかし、開発したサービスが利用されるようになり、よりコア数の多いインスタンスにスケールアップした際、デフォルトではその性能を引き出せません。そこで、php-fpmのプロセス数をインスタンスに最適な数にセットすると、利用しているインスタンスの性能を十分に引き出しながら、処理能力を高められますというおはなしです。

実は、Web上を探すと先に僕の書いた結論をさらっと書かれている記事を見つけることができます。ただ、それがなぜなのか、という点をベンチマークツールを使って測定しながら明らかにしていくことが、この発表の特徴となっています。現場で利用されるときも、ぜひベンチマークを取って測定をしながら、最適な値を設定してみてください。

発表後に、PHPのメモリリークをどうやってケアするか、と言う話が出たので、ここで回答します。これは、プログラムを根本的に見直すのが難しい場合などは、 pm.max_requests パラメータを試しに100〜1000にセットしてみてください。これは、指定した回数リクエストを受けると、プロセスが再生成されるようになり、一旦メモリを開放することができるようになります。ただし、プロセス再生成に関わるCPU利用率があがります。

ちなみに、Wordpressの事例ですが、このブログのことです。このブログのサーバはCentOS 7系で動いていまして、ディストリビューション標準のPHPが5.4系でした(発表中5.3と言ってしまいましたが訂正します)。そのため、IUSリポジトリから7.0系を入れ直しています。7.1ではないのは、IUSにpearに関するパッケージがなく一旦やめたというのがその背景です。

勉強会について

司会をやっておりました。今までのPHP BLTのように大きく盛り上げるって感じではなかったのですが、いかがでしたでしょうか。僕がやると、淡々となってしまうところがあるかもとちょっと反省しております。

一方で、半分ほどの方が初参加、そして勉強会にあまり登壇したことがないかたが積極的にLTに参加いただけたのは、本当に良かったです。中には勉強会自体に初めて登壇したという方もいらっしゃいました。これは、PHP BLTの運営の際に、発起人であり勤務先のCTOである @sotarok さんが「多くの方に話をしてもらう機会を作る」ことがきちんと実現できたと思っており、運営スタッフの一人として大変嬉しかったです。

これからも、PHP BLTがコミュニティに参加するきっかけであれたらいいなと思いますし、自分自身もそれに貢献していくことの大切さを感じた夜となりました。

今後も、他の会社さんの会場でも開ければいいなと思っております。

その他いろいろ

勤務先のメルカリでは、今週さらに増床し(See also:「「スマオク」を運営するザワット社がメルカリグループにジョイン!東京オフィスの増床エリアも開放しました #メルカリな日々 2017/2/20」)、六本木ヒルズのほぼ1フロアを利用することになりました。その際、イベント用のスペースもリニューアル&大きくなり、このPHP BLTが外部の方に勉強会用として初めて開放したイベントになりました。

個人的にも、また何か勉強会を企画できたらいいなと考えています。たぶん、やるとしたら、ゼミ形式になると思います。

お会いした皆様、どうもありがとうございました。またよろしくお願いします。

LINEで送る
Pocket