Sailsで全てのCPUコアを使う

(更新日: 2014/12/16)

Node.jsのMVCフレームワークであるSailsはインストールも簡単で、気軽に試せます。しかし、Node.jsはシングルプロセス&スレッドで動作するので今時のマルチコアCPUではその性能はフルに発揮できません。以前はNginxなどで設定するなど、色々面倒でしたがPM2を利用すると簡単にプロセス管理が行えます。もちろんSails以外のNode.jsアプリケーションのプロセス管理にも利用できます。

Sailsのインストールと起動(通常の場合)

npmがインストールされていればSialsのインストールはコマンド一つで終わります。

起動できるアプリを作るのもコマンド一つです。

新しく作ったtestAppを起動するには次のようにします。

デフォルトでは1337ポートで接続を待機します。ブラウザなどでhttp://localhost:1337:/にアクセスするとSailsの画面が確認できます。

スクリーンショット 2014-12-16 10.30.12

開発するにはこれで困りませんが、運用するには1つのCPUコアしか使わないのは困ります。

 

複数のCPUコアを使ってSailsを起動する

今はPM2でプロセス管理をするのが一般的だと思います。npmでインストールします。

マルチコアを利用して起動するにはアプリケーションディレクトリからpm2コマンドでSailsを起動します。

スクリーンショット 2014-12-16 10.39.48

abコマンドでSailsアプリにアクセスすると複数コアを使っていることがわかります。

PM2のプロセス管理

全てのプロセスをリスト:

プロセスの開始、再起動、停止:

特定プロセスの状態を取得:

状態のモニタリング

他にもログ管理などがあり、色々便利です。使い方はPM2リポジトリのページを見れば分かると思います。

 

ベンチマーク

abコマンドで簡単なベンチマークを取ってみました。

  • PM2有り: Requests per second:    1774.98 [#/sec] (mean)

  • PM2無し: Requests per second:    485.02 [#/sec] (mean)

4コア、8スレッドのCore i7のPCですが、およそコア数と同じくらい4倍ほどになっています。スクリプト系言語のWebアプリプレームワークとしてはかなり高速な部類となる性能でした。

 

Comments

comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です