我一直在爲我的服務器使用forverjs,但由於某種原因服務器停止並且服務器沒有再次重新啓動。 foreverjs可靠嗎?nodejs - 如何確保我的應用程序始終可靠
我應該使用任何其他庫嗎?
發現有許多像pm2,nodemon,upstart,systemd,nginx的庫。哪一個應該確保我的應用程序始終運行。這些工具也可以處理大量的請求嗎?
我一直在爲我的服務器使用forverjs,但由於某種原因服務器停止並且服務器沒有再次重新啓動。 foreverjs可靠嗎?nodejs - 如何確保我的應用程序始終可靠
我應該使用任何其他庫嗎?
發現有許多像pm2,nodemon,upstart,systemd,nginx的庫。哪一個應該確保我的應用程序始終運行。這些工具也可以處理大量的請求嗎?
nodemon是一個不錯的選擇,你可以使用的永遠nodemon使用相結合,
forever start -c nodemon app.js
在我的經驗永遠
而且是非常可靠的,儘量
forever logs app.js
,看看究竟是什麼引起的錯誤
您的問題中有多個問題需要分析。
foreverjs可靠嗎?
forever
是一個非常流行的軟件包。 As seen on GitHub,它有75個貢獻者和636個提交。這個問題主要是基於意見的,但9/10(也許是10/10)經驗豐富的開發人員會說這是可靠的因爲它的目的(我在下面展開)。
我應該使用任何其他庫嗎?
可靠性是通過堅固的軟件設計實現的,而不僅僅是您選擇的軟件包。多年來,我一直使用forever
和pm2
生產流程,而且沒有任何問題。它們包括可靠性的強大功能,如試圖在崩潰時重新啓動應用程序。軟件包不應該修復代碼中的終端錯誤。
發現有很多像lib2,nodemon,upstart,systemd,nginx的庫。 哪一個應該確保我的應用程序始終運行。
這可以通過閱讀他們的GitHub描述找到。我使用nodemon
來快速測試代碼。例如,我啓動了nodemon
進程,它開始了我的Node.js
進程。當我編輯我的代碼並按下保存時,Node.js
進程將自動停止並使用新代碼重新啓動。 nodemon
不應該單獨用於長時間運行的生產服務器,因爲它在退出shell時會停止。 pm2
和forever
是有效的庫,如有必要,您可以調查upstart
,systemd
和nginx
。
關於@卡拉娜德梅爾的回答,我認爲在我上面的解釋中使用forever
來運行nodemon
與使用forever
一樣。
如何確保我的應用程序是可靠所有的時間
對於整體回答你的問題,你應該寫測試,以確保你的代碼是可靠的。如果你已經編寫了有效的單元和集成測試,選擇一個包來運行這個過程將是微不足道的(與可靠性無關),因爲你不應該期望它會崩潰。
pm2在這些情況下是很好的選擇,我個人在我所有的node.js服務器中使用pm2,它提供了許多比其他更重要的功能。
其中一個最好的事情可以很容易地與用於分析服務器的keymetrics/newrelic集成。
另外pm2會給你cpu /內存使用量,你甚至可以配置重啓限制和間隔。
我喜歡pm2,但我也建議[監控](https://mmonit.com/monit/)進行監控(電子郵件停止服務,但我離開節點進程重新啓動到pm2,monit也很適合所有情況「未節點「)。除此之外,我發現它是讓你的代碼記錄適當的錯誤,所以你可以防止重複同樣的事情。在不知道錯誤的情況下,您可以坐在那裏並抓住你的頭。 「我當然希望這不會再發生!」 – ippi