最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用pm2運(yùn)行node應(yīng)用的流程步驟

 更新時(shí)間:2024年03月15日 08:36:42   作者:云牧  
PM2是一個(gè)功能強(qiáng)大的進(jìn)程管理工具,專為?Node.js?應(yīng)用設(shè)計(jì),它提供了進(jìn)程管理、日志管理、負(fù)載均衡和性能監(jiān)控等功能,幫助開發(fā)者輕松應(yīng)對(duì)生產(chǎn)環(huán)境中的各種挑戰(zhàn),本文給大家介紹了使用pm2?運(yùn)行node應(yīng)用的流程步驟,需要的朋友可以參考下

為什么使用 pm2

在生產(chǎn)環(huán)境中運(yùn)行 Node.js 應(yīng)用時(shí),我們面臨著一系列挑戰(zhàn):如何確保應(yīng)用崩潰后能夠自動(dòng)重啟?如何將應(yīng)用的日志輸出到指定文件以便分析?如何充分利用多核CPU來提升應(yīng)用性能?以及如何監(jiān)控應(yīng)用的資源占用情況?這些問題都可以通過PM2(Process Manager 2)來解決。
PM2是一個(gè)功能強(qiáng)大的進(jìn)程管理工具,專為 Node.js 應(yīng)用設(shè)計(jì)。
它提供了進(jìn)程管理、日志管理、負(fù)載均衡和性能監(jiān)控等功能,幫助開發(fā)者輕松應(yīng)對(duì)生產(chǎn)環(huán)境中的各種挑戰(zhàn)。

啟動(dòng) pm2

首先安裝 pm2:

npm install pm2 -g

跑一個(gè) node 應(yīng)用,這里跑 Nest 應(yīng)用:

nest new pm2-test -p npm
cd pm2-test
pnpm build
pm2 start ./dist/main.js

這個(gè) node 已經(jīng)運(yùn)行并且被 pm2 管理起來了。

可以使用 pm2 start 跑多個(gè)進(jìn)程。

pm2 日志管理

查看下日志:

pm2 logs

pm2 會(huì)把所有進(jìn)程的日志打印出來,通過前面的 “進(jìn)程id|進(jìn)程名字” 來區(qū)分,比如 0|main

所有的進(jìn)程會(huì)寫到日志文件中去,在 ~/.pm2/logs 下,以 “進(jìn)程名-out.log”“進(jìn)程名-error.log” 分別保存不同進(jìn)程的日志:

比如 main-out.log 里保存了 main 進(jìn)程的正常日志,而 main-error.log 里保存了它的報(bào)錯(cuò)日志。
可通過 cat ~/.pm2/logs/main-out.log 查看。
查看單個(gè)進(jìn)程的日志:

pm2 logs 進(jìn)程名
pm2 logs 進(jìn)程id

日志清空,使用 pm2 flush 或者 pm2 flush 進(jìn)程名|id查看 main 進(jìn)程的前 100 行日志:pm2 logs main --lines 100

pm2 進(jìn)程管理

PM2提供了豐富的進(jìn)程管理功能,包括啟動(dòng)、重啟、停止和刪除進(jìn)程等。
只需要執(zhí)行 pm2 start 的時(shí)候帶上幾個(gè)選項(xiàng)就好了:
超過 100M 內(nèi)存自動(dòng)重啟:

pm2 start app.js --max-memory-restart 100M

支持 corn 表達(dá)式,每天午夜(00:00)重啟:

pm2 start app.js --cron-restart="0 0 * * *"

當(dāng)文件內(nèi)容改變自動(dòng)重啟:

pm2 start app.js --watch

不自動(dòng)重啟:

pm2 start app.js --no-autorestart

pm2 負(fù)載均衡

再就是負(fù)載均衡,node 應(yīng)用是單進(jìn)程的,而為了充分利用多核 cpu,我們會(huì)使用多進(jìn)程來提高性能。
node 提供的 cluster 模塊就是做這個(gè)的,pm2 就是基于這個(gè)實(shí)現(xiàn)了負(fù)載均衡。
我們只要啟動(dòng)進(jìn)程的時(shí)候加上 -i num 就是啟動(dòng) num 個(gè)進(jìn)程做負(fù)載均衡的意思:

pm2 start app.js -i max 
pm2 start app.js -i 0

-i max 讓 PM2 自動(dòng)設(shè)置進(jìn)程數(shù)為最大值。
-i 0 則讓 PM2 自動(dòng)根據(jù) CPU 核心數(shù)動(dòng)態(tài)設(shè)置進(jìn)程數(shù)。
用多進(jìn)程的方式跑 nest 應(yīng)用:

可以看到啟動(dòng)了 8 個(gè)進(jìn)程,因?yàn)槲沂?8 核 cpu。

跑起來之后,還可以動(dòng)態(tài)調(diào)整進(jìn)程數(shù),通過 pm2 scale:

pm2 scale main 1

此時(shí) main 的集群調(diào)整為 1 個(gè)進(jìn)程。

我們同樣可以添加進(jìn)程數(shù):

pm2 scale main +3

現(xiàn)在變成 4 個(gè)進(jìn)程了,通過這些方式可以動(dòng)態(tài)伸縮進(jìn)程的數(shù)量,pm2 會(huì)把請(qǐng)求分配到不同進(jìn)程上去。這就是負(fù)載均衡功能。

我們同樣可以停止和刪除所有 pm2 的進(jìn)程:

pm2 stop all
pm2 delete all

還可以停止刪除單個(gè)進(jìn)程:

pm2 stop app_name_or_id
pm2 delete app_name_or_id

app_name_or_id 替換為應(yīng)用程序名稱或者 PM2 分配給應(yīng)用程序的 ID
可以通過 pm2 list 命令查看所有 PM2 管理的應(yīng)用程序及其狀態(tài)。

pm2 監(jiān)控

性能監(jiān)控功能,執(zhí)行 pm2 monit:

pm2 monit

這里可以看到不同進(jìn)程的 cpu 和內(nèi)存占用情況。

當(dāng)進(jìn)程多了之后,難道都要手動(dòng)通過命令行來啟動(dòng)么?
pm2 支持配置文件的方式啟動(dòng)多個(gè)應(yīng)用。執(zhí)行 pm2 ecosystem,會(huì)創(chuàng)建一個(gè)配置文件:

pm2 ecosystem

我們就可以把啟動(dòng)的選項(xiàng)保存在這個(gè)配置文件,pm2 根據(jù)配置文件自動(dòng)執(zhí)行這些命令。
然后用 pm2 start ecosystem.config.js 就可以批量跑一批應(yīng)用。

pm2 網(wǎng)站

訪問 pm2 的網(wǎng)站,登錄,創(chuàng)建 bucket:

然后執(zhí)行下面 pm2 link xxx:

再執(zhí)行 pm2 plus 就會(huì)打開 bucket 對(duì)應(yīng)的網(wǎng)頁,在線監(jiān)控本地的應(yīng)用。

docker 結(jié)合 pm2

一般都是 docker 鏡像內(nèi)安裝 pm2 來跑 node 應(yīng)用:
之前我們寫的 Nest 的 dockerfile 需要更改一下:

pm2-runtime 代表 node 命令跑應(yīng)用。

打包鏡像:

docker build -t nest-pm2-test:v1.0 .

運(yùn)行鏡像:

docker run -p 3000:3000 -d nest-pm2-test:v1.0

可以在 docker 看到 pm2 打印的日志。在 terminal 使用 pm2 的命令:

現(xiàn)在這個(gè)容器內(nèi)的 node 進(jìn)程在崩潰時(shí)就會(huì)自動(dòng)重啟。

以上就是使用pm2 運(yùn)行node應(yīng)用的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于pm2 運(yùn)行node應(yīng)用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

永善县| 双柏县| 山东省| 眉山市| 博野县| 秀山| 巨鹿县| 巴彦淖尔市| 海原县| 绍兴县| 武川县| 宜宾市| 广安市| 神木县| 永康市| 宁津县| 冕宁县| 大姚县| 曲阳县| 牟定县| 株洲县| 黑水县| 四子王旗| 定兴县| 临沧市| 区。| 科技| 延津县| 临澧县| 沅江市| 辽中县| 兴化市| 徐水县| 酒泉市| 怀仁县| 东源县| 南安市| 芜湖县| 神池县| 眉山市| 即墨市|