pm2使用總結(jié)

node本身是一個單線程應(yīng)用龄糊。它的特點就是所有的方法都是串行一次執(zhí)行剩晴,并且node沒有能力像java一樣去創(chuàng)建一個新的現(xiàn)成去實現(xiàn)異步萤晴,如果在執(zhí)行I/O中遇到了阻塞互艾,就會降低整個應(yīng)用的執(zhí)行效率。在應(yīng)用和計算能力要求日益倍增的今天猜嘱,單線程最大的弊端就是無法利用多核CPU帶來的優(yōu)勢來提升運行效率

  • pm2的主要特性
    內(nèi)建負載均衡(使用node cluster集群模塊衅枫,可以使用服務(wù)器上的所有cpu)
    后臺運行(node app.js 這種命令是直接在前臺運行的,不穩(wěn)定朗伶,很容易斷)
    0秒停機重載(應(yīng)該是上線升級的時候 不需要停機)
    停止不穩(wěn)定的進程(避免無限循環(huán))
    控制臺檢測

  • 安裝

npm i pm2 -g
  • 用法
pm2 start build/ecosystem.config.js --env test -i 4           #也可以把‘Max’傳遞給start弦撩,正確的進程數(shù)目依賴于cpu的核心數(shù)目
pm2 start build/ecosystem.config.js --name my-api  # 命名進程,后面的參數(shù)其實都可以在config.js中定義
pm2 deploy build/ecosystem.config.js test  # 執(zhí)行deploy部署
pm2 list                        # 顯示所有進程狀態(tài)
pm2 monit                       # 監(jiān)控所有進程
pm2 logs                        # 顯示所有進程日志
pm2 log name/id                 # 顯示單個進程日志(name為進程名稱)
pm2 stop all                    # 停止所有的進程
pm2 stop name/id                # 停止指定的進程
pm2 reload all                  # 0秒停機重載所有的進程
pm2 reload name/id              # 0秒停機重載指定的進程
                                # 0秒停機重載:
                                # 這項功能允許你重新載入代碼而不用失去請求連接论皆。
pm2 restart all                 # 重啟所有的進程
pm2 restart name/id             # 重啟指定的進程
pm2 delete all                  # 殺死所有的進程
pm2 delete name/id              # 殺死指定的進程

示例
pm2 list


pm2_list.png

pm2 monit
監(jiān)視每個node進程的CPU和內(nèi)存的使用情況


pm2_monit.png
  • app.js 解析(對應(yīng)的地方會有注釋)
const origin = typeof process.argv[2] != 'undefined' ? process.argv[2] : 'origin/dev';

module.exports = {
  /**
   * Application configuration section
   * http://pm2.keymetrics.io/docs/usage/application-declaration/
   * start 時會根據(jù)--env 后面的參數(shù)益楼,決定注入不同的環(huán)境變量
   * pm2 start 的時候會執(zhí)行apps里面的配置
   */
  apps: [
    {
      name: '進程的名字',
      script: 'server.js',  # 注入了環(huán)境變量后,執(zhí)行的腳本
      log:  '/var/log/xm.log',
      error: '/var/log/xm-err.log',
      output: '/var/log/xm-out.log',
      instances: 4,  # 實例數(shù)
      exec_mode: 'cluster',
      env: {
        COMMON_VARIABLE: 'true',
      },
      env_test: {
        NODE_ENV: 'test',
        port: 4003,
      },
      env_development: {
        NODE_ENV: 'development',
        port: 4003,
      },
      env_production: {
        NODE_ENV: 'production',
        port: 3862,
      },
    },
  ],

  /**
   * Deployment section
   * http://pm2.keymetrics.io/docs/usage/deployment/
   * pm2 deploy的時候會執(zhí)行deploy中的配置纯丸,會使用ssh的方式去登錄到服務(wù)器上
   * post-deploy 為拉取代碼之后 要執(zhí)行的命令偏形,若是不設(shè)置post-deploy字段的話静袖,執(zhí)行deploy命令就只是登錄到服務(wù)器上拉取對應(yīng)分支的代碼
   */
  deploy: {
    test: {
      user: 'root',
      host: 'x.x.x.x',
      ref: origin,
      key: 'build/key',
      repo: 'git倉庫地址',
      path: '代碼在服務(wù)器上的路徑',
      'post-deploy': 'npm run test_build && npm run test_start', 
      env: {
        NODE_ENV: 'test',
      },
    },
  },
};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末觉鼻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子队橙,更是在濱河造成了極大的恐慌坠陈,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捐康,死亡現(xiàn)場離奇詭異仇矾,居然都是意外死亡,警方通過查閱死者的電腦和手機解总,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門贮匕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人花枫,你說我怎么就攤上這事刻盐。” “怎么了劳翰?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵敦锌,是天一觀的道長。 經(jīng)常有香客問我佳簸,道長乙墙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮听想,結(jié)果婚禮上腥刹,老公的妹妹穿的比我還像新娘。我一直安慰自己汉买,他們只是感情好肛走,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著录别,像睡著了一般朽色。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上组题,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天葫男,我揣著相機與錄音,去河邊找鬼崔列。 笑死梢褐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的赵讯。 我是一名探鬼主播盈咳,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼边翼!你這毒婦竟也來了鱼响?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤组底,失蹤者是張志新(化名)和其女友劉穎丈积,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體债鸡,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡江滨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厌均。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唬滑。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棺弊,靈堂內(nèi)的尸體忽然破棺而出晶密,到底是詐尸還是另有隱情,我是刑警寧澤镊屎,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布惹挟,位于F島的核電站,受9級特大地震影響缝驳,放射性物質(zhì)發(fā)生泄漏连锯。R本人自食惡果不足惜归苍,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望运怖。 院中可真熱鬧拼弃,春花似錦、人聲如沸摇展。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咏连。三九已至盯孙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祟滴,已是汗流浹背振惰。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垄懂,地道東北人骑晶。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像草慧,于是被迫代替她去往敵國和親桶蛔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354