麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術(shù)干貨  > 使用PM2在節(jié)點.js中進行進程管理

使用PM2在節(jié)點.js中進行進程管理

來源:千鋒教育
發(fā)布人:syq
時間: 2022-09-14 11:24:42 1663125882

  Node.js非常擅長處理I / O操作,但是當涉及到CPU密集型任務(wù)時,它會崩潰。您可以通過運行繁重的操作來輕松停止應(yīng)用程序,并且由于 Node.js是單線程的,因此它將阻止進一步的請求。

0.3837566690725658

  現(xiàn)在,要處理此問題,您可以生成與主進程并行的子進程,以便每當有新請求傳入時,它都將由此新進程處理。Node.js中的本機群集模塊允許您手動配置應(yīng)用程序以生成子進程的群集。但是,如果有一個包可以為您處理它,那不是更好嗎?

  PM2是一個進程管理器,它負責從處理多個進程到設(shè)置特定于環(huán)境的部署策略,再到將日志保存到系統(tǒng)中的所有事務(wù)。這是一個功能豐富的庫,是Node.js社區(qū)中粉絲的最愛,這篇博客文章將介紹其中的一些關(guān)鍵功能。讓我們開始!

  基本設(shè)置

  要將其安裝在系統(tǒng)上,可以鍵入 。最好將其全局安裝,以便您可以直接在命令行中使用pm2。我們將使用具有單個終結(jié)點的簡單快速應(yīng)用程序。因此,在空目錄中,首先通過鍵入 來創(chuàng)建節(jié)點項目。之后,您可以通過鍵入 來安裝 express。現(xiàn)在,創(chuàng)建一個名為 main.js的文件,并將此代碼段復(fù)制到該文件中。npm i -g pm2npm init -ynpm i express

1

  現(xiàn)在,我們通常使用 來運行我們的應(yīng)用程序,但現(xiàn)在我們使用 pm2,我們可以使用 。node main.jspm2 start main.js

2

  您將獲得此表,其中顯示名稱/ID、CPU/內(nèi)存消耗以及運行應(yīng)用程序的進程的狀態(tài)等詳細信息。您還可以選擇使用標志為進程顯式提供名稱。如果您沒有顯式為其指定名稱,它將使用文件名作為進程的名稱。name

  現(xiàn)在在屏幕截圖中,應(yīng)用程序似乎已停止。在表格之前,您會看到“完成”消息,但在表格之后,您看不到任何內(nèi)容。但是,如果您打開瀏覽器并轉(zhuǎn)到相應(yīng)鏈接,您將看到我們從 API 終端節(jié)點發(fā)回的“請求成功”消息。因此,應(yīng)用程序仍在運行。只是pm2守護它,這基本上意味著它在后臺運行進程,僅此而已。

  進程管理命令

  在任何給定點,都可以通過鍵入 或 或 來查看進程的狀態(tài)。pm2 statuspm2 lspm2 list

  您可以通過 使用后跟進程的名稱或 ID(或 )來停止進程。您還可以使用 來停止所有進程。停止進程后,請嘗試向應(yīng)用程序發(fā)出請求,看看它是否正常工作。附言:不應(yīng)該。pm2 stoppm2 stop mainpm2 stop 0pm2 stop all

  pm2 delete后跟進程的名稱或 ID,將從列表中刪除該進程。( 或 )。您還可以使用 刪除所有進程。pm2 delete mainpm2 delete 0pm2 delete all

  還有 2 個命令可幫助您管理流程。一個是命令,另一個是命令。這兩個命令本質(zhì)上都重新運行進程,但區(qū)別在于它們?nèi)绾螆?zhí)行。restartreload

  A 將首先終止該進程,然后再次啟動它。因此,重新啟動進程時會涉及一些停機時間。pm2 restart

  另一方面,A 將在后臺創(chuàng)建一個新進程。只有當這個新進程被創(chuàng)建時,它才會殺死舊的進程。這可確保在重新加載進程時不會出現(xiàn)停機。如果由于某種原因重新加載不起作用,它最終會在特定時間后回退到經(jīng)典重啟。pm2 reload

  熱重載

  使用 Node.js 運行應(yīng)用程序時,每次在應(yīng)用程序中進行更改時都需要重新啟動服務(wù)器。Nodemon是一個流行的庫,每當服務(wù)器檢測到更改時,它就會重新啟動服務(wù)器。您可以使用該標志在pm2中實現(xiàn)相同的目標。因此,如果在結(jié)束時提供監(jiān)視標志,則在啟動任何進程時,它將偵聽更改,然后自動重新啟動服務(wù)器(watchpm2 start main.js --watch)

  其他一些啟動選項

  最大內(nèi)存重啟<200MB> — 此選項將在進程達到特定內(nèi)存限制時重新啟動進程。您可以指定內(nèi)存限制,單位為千字節(jié) (K)、兆字節(jié) (M) 或千兆字節(jié) (G)

  日志 <文件路徑> — Log 將指定要在其中存儲應(yīng)用程序日志的文件。嘗試啟動進程,但這次,請在末尾使用帶有日志文件名稱的日志標志。

  現(xiàn)在,如果向光源終結(jié)點發(fā)出請求,則會在項目文件夾中看到一個名為 logFile.txt。此文件的頂部將包含 log 語句。pm2 start main.js --log ./logFile.txt

  重新啟動延遲<以毫秒為單位>將在自動重新啟動之間添加延遲。

  時間標志將為所有日志添加時間戳。重新啟動應(yīng)用程序,但這次在末尾附加時間標志。.現(xiàn)在向終結(jié)點發(fā)出請求,你將在日志文件中看到記錄的消息之前的時間戳。pm2 restart 0 --time

  無自動重新啟動將禁用自動重新啟動。當您想要執(zhí)行一次性腳本并且不希望進程管理器在腳本完成運行后重新啟動腳本時,這是有道理的。

  cron標志將根據(jù)您添加的cron表達式間隔重新啟動該過程,我有一個單獨的視頻詳細解釋了cron表達式,如果您想了解更多信息,可以查看它。

  無守護進程標志不會妖魔化您的 pm2 進程。因此,您現(xiàn)在不會在后臺運行它,而是在控制臺本身上看到所有日志和事件,就像在典型的節(jié)點執(zhí)行中一樣。

  現(xiàn)在,我們在啟動或重新啟動進程時手動添加這些選項是沒有意義的。相反,我們要做的是添加一個配置文件,該文件將包含所有這些選項,以便每當我們啟動應(yīng)用程序時,它始終在啟用這些選項的情況下運行。

  創(chuàng)建 pm2 配置文件

  要生成此配置文件,請在控制臺中鍵入 。這將創(chuàng)建一個名為生態(tài)系統(tǒng).config.js。如果要創(chuàng)建自己的配置文件,請確保它以 結(jié)尾,以便 PM2 能夠?qū)⑵渥R別為配置文件。在文件中,復(fù)制此代碼段。pm2 init simple.config.js

3

  我將解釋我們在這里使用的選項。

  名稱:進程的名稱

  腳本:要執(zhí)行的腳本的位置

  監(jiān)視:跟蹤更改并重新啟動進程

  ignore_watch:不會跟蹤一組文件/文件夾的更改

  time:將時間戳附加到日志文件中的日志語句

  out_file和error_file:將相應(yīng)的日志語句添加到這些文件

  您還可以添加特定于環(huán)境的選項,例如,如果環(huán)境變量值在測試和生產(chǎn)模式之間發(fā)生更改,則可以在內(nèi)部或分別添加這些變量。envenv_production

  稍后在切換到群集模式時,我們將添加一些額外的選項,但就目前而言,這看起來不錯。

  現(xiàn)在,我們可以運行配置文件 (),而不是使用 ,它將反過來為我們運行腳本。您可以在應(yīng)用程序數(shù)組中添加多個非節(jié)點.js應(yīng)用程序,它仍然可以工作。PM2不僅局限于節(jié)點.js。您可以從其他語言(如python)運行進程,例如,使用pm2。pm2 start main.jspm2 start ecosystem.config.js

  現(xiàn)在我們對pm2有了一些了解,讓我們看看它如何幫助管理多個進程。在配置文件中,添加 2 個額外的選項,exec_mode和實例。

4

  當您想要為應(yīng)用程序啟動進程集群時,需要將exec_mode設(shè)置為“集群”。默認情況下,它設(shè)置為“分叉”。

  設(shè)置集群時,您需要說明需要多少個流程實例。您可以傳遞 0/max,這將使進程旋轉(zhuǎn)等于系統(tǒng)中的內(nèi)核數(shù)。-1 將比最大值少旋轉(zhuǎn) 1,如果你傳入任何其他數(shù)字,它將啟動那么多進程。

  現(xiàn)在,如果您運行配置文件,您將看到一堆進程同時運行(在我的情況下是8,因為我有一個8核系統(tǒng))。您還會注意到,執(zhí)行模式已更改為“群集”。

5

  PM2具有高級儀表板,可讓您監(jiān)控流程。您可以運行配置文件,然后使用命令打開此儀表板。pm2 monit

6

  它為您提供了所有流程的更實時視圖。您可以單獨檢查系統(tǒng)中每個進程的資源消耗和分配。還有一個日志部分,您可以在其中實時跟蹤所有日志。

  好吧,這篇博客文章差不多就是這樣。這是對pm2及其方便功能的簡要概述。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學 138****2860 剛剛成功領(lǐng)取
王同學 131****2015 剛剛成功領(lǐng)取
張同學 133****4652 剛剛成功領(lǐng)取
李同學 135****8607 剛剛成功領(lǐng)取
楊同學 132****5667 剛剛成功領(lǐng)取
岳同學 134****6652 剛剛成功領(lǐng)取
梁同學 157****2950 剛剛成功領(lǐng)取
劉同學 189****1015 剛剛成功領(lǐng)取
張同學 155****4678 剛剛成功領(lǐng)取
鄒同學 139****2907 剛剛成功領(lǐng)取
董同學 138****2867 剛剛成功領(lǐng)取
周同學 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
什么是PlatformIo?

PlatformIO是什么PlatformIO是一個全面的物聯(lián)網(wǎng)開發(fā)平臺,它為眾多硬件平臺和開發(fā)環(huán)境提供了統(tǒng)一的工作流程,有效簡化了開發(fā)過程,并能兼容各種...詳情>>

2023-10-14 12:55:06
云快照與自動備份有什么區(qū)別?

1、定義和目標不同云快照的主要目標是提供一種快速恢復(fù)數(shù)據(jù)的方法,它只記錄在快照時間點后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動備份的主要目標...詳情>>

2023-10-14 12:48:59
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨特的優(yōu)勢和特點。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對象關(guān)系映射)解決的主要問題是將關(guān)系數(shù)據(jù)庫與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲,而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運算符?

Go為什么不支持三元運算符Go語言是一種以簡潔和有效性為目標的編程語言,因此在設(shè)計過程中,Go的設(shè)計者刻意排除了一些他們認為可能導致復(fù)雜性或...詳情>>

2023-10-14 12:12:36
主站蜘蛛池模板: 处处吻动漫免费观看全集| 妞干网在线观看视频| 野花社区在线观看www| 久久综合九色欧美综合狠狠| 国产麻豆久久| 奶特别大的三级日本电影| 99久久精品费精品国产一区二区| 一级黄色欧美| 免费体验120秒视频| 中文字幕一区二区三区精彩视频 | 免费网站看v片在线a| 美国式禁忌芭芭拉| 国产精品一区二区久久| 亚洲另类春色校园小说| 又硬又粗又长又爽免费看| 久久99精品九九九久久婷婷| 久re这里只有精品最新地址| 444kkk视频在线观看国产| 十三以下岁女子毛片免费播放| 色综合久久网| 久久天天躁夜夜躁狠狠85台湾 | 天天综合网天天综合色| 国内精品久久久久影院蜜芽| 日韩精品一区二区三区在线观看| 抽搐一进一出在深一点| 久久精品国产精品国产精品污| 我要看特级毛片| 欧美一级片免费在线观看| 182在线播放| 久久亚洲精品国产亚洲老地址| 国产激情一区二区三区| 黄色www.| 黄色a级片电影| 女bbbbxxxx另类亚洲| 国产成人三级经典中文| 欧美一区二区三区久久综| 最新国产三级在线不卡视频| 最近免费中文字幕大全高清片| 91成人影院| 国内精品视频一区二区八戒| 美女被网站大全在线视频|