Egg js 程序管理為什麼沒有選型 PM2 ?

時間 2021-05-30 12:54:50

1樓:雨打梨花

可以先簡單看一下 pm2 實現的功能(來自官方文件):

配置檔案,支援設定環境變數、服務名稱、入口檔案等,支援自動部署,一鍵部署到生產環境(可以配置 ssh 自動登入)

程序管理和監控(cpu、記憶體等),支援多個應用,支援其他語言的啟動指令碼

日誌管理,功能比較強大,支援 console 輸出的日誌,也支援結合其他常見日誌模組例如 bunyan、bunyan-debug-stream 等一起使用,支援日誌級別分類等常用功能。

啟動鉤子,支援儲存應用列表自動啟動應用列表等

cluster mode,可自定義instances數量,支援 reload

提供入口點鉤子函式,提供了4個方法:onStart,onStop,sensors,actuators

支援 watch 功能

除了以上列出功能外,pm2還做了許多細緻的工作,例如可以設定記憶體閾值達到上限則自動重啟程序等等,這裡就不一一列出了

總結一下優點,

功能強大,涵蓋了 nodejs 服務大部分應用場景,甚至包含自動部署、監控、實時日誌等高階功能。

使用和上手非常簡單,比較傻瓜式。

再說一下缺點,其中 @天豬 提到了 pm2 不支援 master-worker-agent 模型,其中 agent 的工作在較大型專案實踐中是非常常見的需求(當然這個需求也可以自己實現,只用 pm2 做程序管理,只是相對比較麻煩)。

另外,因為 pm2 的實現是比較複雜的,由此也導致一些問題,例如很難深入 pm2 內部去做一些定製化的功能或者排查一些問題。在本人的實踐中還遇到過 pm2 自身導致記憶體洩漏的問題(具體原因因為時間關係沒有仔細排查,放棄 pm2 之後就沒有再遇到過記憶體洩漏問題,有興趣的同學可以自行 Google 一下 pm2 memory leak)。

總結一下,對於技術選型而言,個人專案和小型專案還是推薦使用 pm2,比較省心。在大型專案中,相對而言會追求比較極限的效能和較高的穩定可靠性以及可控性,所以,大型專案前期也可以結合 pm2 使用,並不衝突,而在開發成本允許的情況下,自行實現 pm2 的部分功能也是可行的,難度也不大,此外還有許多功能也有相應的替代品。

以上回答主要針對 pm2 的技術選型,沒有限定哪個框架。

最後,回到問題本身,為什麼 eggjs 沒有使用 pm2,eggjs 核心開發 @天豬 已經解釋了具體原因,本人也非常贊同,「應用開發者可以根據自己愛好選擇 pm2」,以上。

2樓:熊偉倫

'use strict'

;// npm run dev DO NOT read this file

require

('egg'

).startCluster

();// bash

EGG_SERVER_ENV

=prod

pm2start

index.js

--name

my_project

給個參考,用 PM2 + index.js + egg,主要是覺得 PM2 日誌管理方便。

有沒有哪個安卓機,不ROOT 不裝程序管理軟體和一鍵加速之類還能用的?

葉廝 你這個問題是啥時候提的?現在一線的旗艦級安卓機都不會卡啊,也沒必要ROOT 加速什麼的。我去年一加3到現在還是野生狀態,不需要擔心的。 無法被壓 我也不知道你用的什麼手機,但是我的手機是小公尺5,沒用任何你說的軟體,一點也不卡,動畫不掉幀,切換任務流暢。效能能有驍龍625的,基本就不卡的,有驍...

啟動子程序為什麼要先 fork 父程序?

遊薪渝 可參考 現代作業系統 第三版第49頁 在UNIX中,分兩步即先fork再execve,是為了在fork與execve之間時,子程序能夠處理其檔案描述符,以完成對標準輸入,標準輸出以及標準出錯的重定向。Windows中,則相反,呼叫Win32函式CreateProcess即可。 iswar f...

有什麼好的「專案程序管理系統或軟體」?可付費。?

魚骨yugusoft 為您推薦魚骨!作為一款以任務 專案為核心的協同辦公軟體,魚骨集任務管理 日程管理 財務審批 人力管理 即時通訊等多功能於一身。更引入國際流行的敏捷開發方法助力辦公,希望可以最大化提高使用者工作效率和執行力!任務協作 協作工具 管理工具 目標管理,結果導向 用任務驅動內部協作,區...