2015-09-24 54 views
0

我想創建的NodeJS一種實用工具,監聽到火力地堡的變化,這樣的:穩定性的影響

var Firebase = require('firebase'); 
var agentRef = new Firebase("https://mybase.firebaseio.com"); 
agentRef.child('users').on('value', function (snapshot) { 
    console.log(snapshot.val()); 
}); 

它將運行,只要有可能,最好永遠運行一些常規發生變化時。

問題是,運行NodeJS幾天或幾個月有多可靠?

我該如何追蹤它的健康狀況並按照應有的方式運行。如果它掛起,我怎麼知道?這是一個正確的方式嗎?也許我應該聽其他一些工具的變化,然後在需要時運行NodeJS代碼?

+0

我在問,因爲我認爲人們在他們的工作中有過這個問題,所以可以給我一個關於如何處理這個問題的建議。 –

+1

node.js應用程序絕對可以運行幾天/幾周/幾個月/年。這一切都取決於它是否存在導致內存泄漏/資源問題的錯誤,這將取決於正在使用的模塊以及與所述模塊交互的代碼。 –

回答

0

在某些時候你滿足2類的問題

  1. 未處理的異常
  2. 低/資源不足(內存,描述符,...)

第一個通過過程中容易解決控制系統,如http://supervisord.org/Forever。這是記錄異常並重新運行nodejs進程的好方法

低內存問題無法直接由node.js解決,因此您需要監視它。如果你有內存泄漏 - 在某些時候你會遇到一些嚴重的機器問題。

如果你不能修復與更改代碼泄漏 - 嘗試在一些數量事件

的node.js本身長的生產運行相當穩定的重新運行的node.js,監視你的資源和日誌,然後決定如何修復

1

我同意@KevinB。 Node.js二進制文件是穩定的,可能不像linux內核,但仍然堅如磐石,只要您使用其中一個LTS版本。問題的關鍵是,你的代碼(你需要的代碼,在這種情況下firebase,帶來不穩定到系統中。

正如@vmkcom已經回答了,那是的的node.js本身範圍之內,如不良Java代碼不在JBoss或Tomcat應用程序服務器中,人們一直在監視應用程序服務器的行爲,在node.js的情況下,可能是建議的supervisorforeverpm2或簡單的舊的linux工具,如果你方便使用bash和朋友

我想說的另一點是你的應用程序是如何有彈性的不僅僅是內存的中斷,而且還有網絡,服務等的內容?如果Firebase暫時無法使用,那麼代碼會重新連接?你知道你的應用程序如果主機運行的磁盤空間不足,與你的應用程序無關嗎?你能活下Chaos Monkey嗎?