LoginSignup
11

More than 5 years have passed since last update.

Node-redを激しく使うと起きることと対処法

Last updated at Posted at 2017-11-29

はじめに

色々とNode-redで処理を増やしていくと、だんだん挙動が怪しくなった時期があった。
あんまし細かく調査したわけじゃないので、嘘も混ざっているのかもだけれども、どこかで誰かの役に立てばと思い公開する。

追記

バージョンあげたら全く発生しなくなった。
元々0.17.5とかだったのを0.18.5くらいにあげたらサクサクになった。感謝。

起きる事象

1、Node-redが起動しない。
2、デプロイに失敗する&サーバーがクラッシュする。
3、きちんと書いているのに動かない。
4、見えないNodeが残っていてエラーが出る。
5、パフォーマンスの強烈な低下。

起きた事があるケース

・context.global.process.env.VCAP_SERVICES経由でEnvを見ようとするNodeがどこかにいる場合。
⇨1、2

・Subflowを入れ子する場合。
・Subflow内で激しく(感覚的に数十個)Nodeを入れた場合。
・そのSubflowを多数使う場合。 2018/05/14追記
・1回のDeploy時に変更となるNodeの接続数が多量の場合。(多分、サーバー側のチェックを走らせた時に、その数が多いと死んでしまう模様。) 2018/05/14追記
⇨1、2、3、5

・その辺で拾って来たソースをインポートする際、自分のパレットに無いNodeタイプがある場合に発生した事がある。使えないからと消しても、実は裏に残っているっぽい。この場合は、デプロイ時にエラーが出るので「ノードの設定」サイドバーからゴミNodeを削除してやればOKになるっぽい。
⇨4

・Debugノードを多数仕込んでいる場合。
⇨5

・HTTPでページを取りに行く際に、相手が応答しない。
⇨5

その他にも稀に(数十回に1回?)2が発生する事がある。再度デプロイすると問題なく通る事もあるので、メモリが足りてない時なのか?

手探り解決策例

・問題のありそうなSubflow周りを治して(Subflow化しない)デプロイやり直し
・メモリをMaxまで増やして再起動(これで動くケースもあった気がする)
・全然起動しなくてソースの修正すら出来ない場合、以下で頑張る。
  ・ブラウザ側で頑張ってソースを直して、すべてのタブでインデントされたJSONフォーマットでエクスポートして、メモ帳などに一旦退避
  ・Cloudantを開いて、noderedデータベースの<アプリ名>/flow文書を開く
  ・中のJSONのFlowの項目を一旦バックアップとして別のメモ帳に退避し、上記でエクスポートしたJSONを貼り付ける
  ・サーバー再起動

予防策

・動いたバージョンは定期的にExportして保管しておく。例えば、
 ・起動時のトリガーでCloudant上のflow文書をAPI経由で取得してバージョンが変わっていたらGmailなどに送付する処理を仕込んでおく
 ・Cloundantのレプリケーション機能などを使う?
・Deployする時にCPU使用率が高く無いことを確認して行う。(2018/05/14追記)

その他

全く起動しなくなると、ソースコード修正もままならないのでかなり焦りますが、Cloudant側から弄れるのでなんとか頑張りましょう。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11