2013年6月 7日
サーバーマシンのコア数に応じてworker数を調整する方法
PSGI/Plackアプリケーションの起動方法いろいろと本番環境アレコレ
便乗ポスト。最近は、上記内の「シェルスクリプトでラップする方法」で運用していることが多いです。その場合のone more tips.
appサーバーごとにマシンスペックが違う場合がたまにあって、その場合マシンごとに worker数を調整したいけど、deployの都合上サーバー起動スクリプトは同じやつを使いた いってことがあります。
そこでおすすめなのが、CPUコア数に応じてworker数を計算する方法です。
シェルスクリプトの場合、
% cat app.sh
#/bin/sh
NCPU=`getconf _NPROCESSORS_ONLN`
WORKERS=$(expr $NCPU \* 5)
exec plackup -E production -s Starlet --max-workers=$WORKERS
となります。この場合だと、コア数x5のworkerが起動するはずです。 この方法はfujiwara氏に教えてもらいました。
もちろん、CPUコア数のみにworker数を比例させるのはいささか乱暴なので、 ちゃんとチューニングしたいのであれば、サーバーごとに調整したほうが良いのは 言うまでもありません。