Node.jsのMVCフレームワークであるSailsはインストールも簡単で、気軽に試せます。しかし、Node.jsはシングルプロセス&スレッドで動作するので今時のマルチコアCPUではその性能はフルに発揮できません。以前はNginxなどで設定するなど、色々面倒でしたがPM2を利用すると簡単にプロセス管理が行えます。もちろんSails以外のNode.jsアプリケーションのプロセス管理にも利用できます。
Sailsのインストールと起動(通常の場合)
npmがインストールされていればSialsのインストールはコマンド一つで終わります。
$ sudo npm install -g sails
起動できるアプリを作るのもコマンド一つです。
$ sails new testApp
新しく作ったtestAppを起動するには次のようにします。
$ cd testApp $ sails lift
デフォルトでは1337ポートで接続を待機します。ブラウザなどでhttp://localhost:1337:/にアクセスするとSailsの画面が確認できます。
開発するにはこれで困りませんが、運用するには1つのCPUコアしか使わないのは困ります。
複数のCPUコアを使ってSailsを起動する
今はPM2でプロセス管理をするのが一般的だと思います。npmでインストールします。
$ sudo npm install pm2 -g
マルチコアを利用して起動するにはアプリケーションディレクトリからpm2コマンドでSailsを起動します。
$ pm2 start app.js $ pm2 start app.js -i max # Enable load-balancer and cluster features
abコマンドでSailsアプリにアクセスすると複数コアを使っていることがわかります。
PM2のプロセス管理
全てのプロセスをリスト:
$ pm2 list
プロセスの開始、再起動、停止:
$ pm2 stop < app_name | id | all >
$ pm2 restart < app_name | id | all >
$ pm2 delete < app_name | id | all >
特定プロセスの状態を取得:
$ pm2 describe 0
状態のモニタリング
$ pm2 monit
他にもログ管理などがあり、色々便利です。使い方はPM2リポジトリのページを見れば分かると思います。
ベンチマーク
abコマンドで簡単なベンチマークを取ってみました。
$ ab -c 10 -n 100000 http://localhost:1337/
-
PM2有り: Requests per second: 1774.98 [#/sec] (mean)
-
PM2無し: Requests per second: 485.02 [#/sec] (mean)
4コア、8スレッドのCore i7のPCですが、およそコア数と同じくらい4倍ほどになっています。スクリプト系言語のWebアプリプレームワークとしてはかなり高速な部類となる性能でした。
Leave a Comment