« Redis::LeaderBoardっての書いてた | メイン | DBIx::FixtureLoaderってのを書きました »

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数を比例させるのはいささか乱暴なので、 ちゃんとチューニングしたいのであれば、サーバーごとに調整したほうが良いのは 言うまでもありません。

投稿者 Songmu : 2013年6月 7日 17:31