node.jsのforeverがnode.js v0.10でハングする件について

急にnode.jsの話ですが、ちょっと前からこのサーバーでnode.jsをインストールして色々と実験しています。目標としてはiconDecotterのAPIをリリースするつもりでいるのですが、その前に大変躓いたことがあったので書いておきます。

node.jsでWebサービスを稼働させるためには、プロセスをデーモン化等しておかないとなりません。
そのためのモジュールとして、foreverというのがよく使われているそうなのですが、ひと通りスクリプトを書き終えてforeverで起動させてみたところ、スクリプトは正常に稼働しているようなのですが、foreverの他一切のコマンドを打つとハングするという謎状況に陥ってしまいました。

元々foreverはnode.js v0.8.xが動作環境ではありますが、node.js v0.10.x(0.9.x)で使用すると、startさせるのはいいのですが、listやstop等のコマンドを使うとハングするという不具合が発生しております。

Issues · nodejitsu/forever · GitHub

これに関しては、foreverのフォーラムでも議論になっていますが、どうやらforeverのモジュールに含まれているlazy.jsを新しいものに置き換えれば正常に動作するようです。

Nathanaela/node-lazy at Cleanup · GitHub

まずnpmでlazyをインストール。
※割愛してますが、npmとnaveを導入しています。

npm install lazy -g

ここでインストールしたlazyのディレクトリにあるlazy.jsを、foreverの中にある
/node_modules/nssocket/node_modules/lazy/lazy.js に上書きします。

#forever内のlazyディレクトリに移動
cd /home/usr/.nave/installed/0.10.1/lib/node_modules/forever/node_modules/nssocket/node_modules/lazy/
#先程インストールしたlazyのlazy.jsを、現在のディレクトリにあるlazy.jsに上書き
cp /home/usr/.nave/installed/0.10.1/lib/node_modules/lazy/lazy.js lazy.js

foreverでプロセスを動かしてしまっている場合は、一旦killした後、nodeから再起動して再度startすると、無事list等も正常に動作するようになりました。

起動中のnodeプロセスを調べるコマンド。

ps -leaf | grep node

コメント

タイトルとURLをコピーしました