您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)使用pm2守護(hù).NET Core應(yīng)用程序的案例的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
一.守護(hù)進(jìn)程的前世今生
守護(hù)進(jìn)程,英文名:“daemon",也有守護(hù)神的意思。守護(hù)進(jìn)程是一個(gè)在后臺(tái)運(yùn)行并且不受任何終端控制的進(jìn)程,不會(huì)隨著會(huì)話結(jié)束而退出。諸如 mysql、apache 等這類程序默認(rèn)就提供了守護(hù)進(jìn)程或者以守護(hù)進(jìn)程的方式工作,我們熟悉的 “mysqld”、"httpd" 等其中的 d 就是 daemon 的意思。比如我們?cè)?Linux 系統(tǒng)上以命令 dotnet xxx.dll
運(yùn)行 .NET Core 應(yīng)用程序時(shí),如果我們結(jié)束會(huì)話,那么我們的程序?qū)?huì)結(jié)束運(yùn)行。其原因是 Linux 系統(tǒng)中有一個(gè)信號(hào)機(jī)制,進(jìn)程可以通過一系列信號(hào)進(jìn)行通信,當(dāng)用戶結(jié)束會(huì)話時(shí),會(huì)向當(dāng)前會(huì)話的子進(jìn)程發(fā)送一個(gè) HUP 信號(hào),一般情況下當(dāng)前會(huì)話的子進(jìn)程收到HUP信號(hào)以后就會(huì)退出自己。 這時(shí)我們就需要一個(gè)守護(hù)進(jìn)程來管控我們的 .NET Core 應(yīng)用程序進(jìn)程。
二.讓進(jìn)程后臺(tái)運(yùn)行
Linux 下讓進(jìn)程后臺(tái)方式很多,舉栗子:Supervisor、Screen、nohup 命令 等等。Supervisor 是自己創(chuàng)建了一個(gè)守護(hù)進(jìn)程,然后讓我們的應(yīng)用程序進(jìn)程成為其子進(jìn)程,通過這種管控方式讓我們的應(yīng)用程序后臺(tái)運(yùn)行。nohup 顧名思義,就是不向會(huì)話進(jìn)程發(fā)送hup信號(hào)。
在這里我就搬出本文的主角 pm2,通過 pm2 來讓進(jìn)程后臺(tái)運(yùn)行。
三. pm2介紹
pm2 從名字上和我們平時(shí)在生活中接觸到的 pm2.5 有點(diǎn)像,不過他們可不是一個(gè)東西。做 nodejs 開發(fā)的童鞋可能對(duì) pm2 比較熟悉,pm2 是一個(gè)高級(jí)nodejs進(jìn)程管理工具。
看到這里,可能有童鞋會(huì)有疑問,nodejs進(jìn)程管理工具怎么管理 .NET Core 進(jìn)程?博主經(jīng)過長期的在 Linux 下的摸爬滾打,最終發(fā)現(xiàn)使用pm2來守護(hù) .NET Core 進(jìn)程完全沒有問題,除了 nodejs 其他的很多程序都是可以的。而且無需繁瑣的配置,安裝、使用、管理進(jìn)程都非常簡單,這是我選擇它的主要原因。
這里需要說明一下是使用 pm2 來讓進(jìn)程后臺(tái)運(yùn)行,因?yàn)槿绻皇?nodejs 程序, pm2的一些為nodejs準(zhǔn)備的功能可能是無法使用的,但是對(duì)于我們守護(hù) .NET Core 應(yīng)用程序足夠了。
四.pm2的安裝以及使用
4.1 安裝
4.1.1 安裝 nodejs
使用pm2需要安裝nodejs,這個(gè)網(wǎng)上很多資料,就不再本文詳細(xì)說明了,我前面寫過一篇在 Centos 7下安裝的文章,傳送門。
4.1.2 安裝 pm2
npm install pm2 -g
就一句話,是不是很簡單。安裝成功以后使用命令 pm2來檢查是否安裝成功,你會(huì)看到如下輸出:
-------------
__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__
Runtime EditionPM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.Start and Daemonize any application:
$ pm2 start app.jsLoad Balance 4 instances of api.js:
$ pm2 start api.js -i 4Monitor in production:
$ pm2 monitorMake pm2 auto-boot at server restart:
$ pm2 startupTo go further checkout:
http://pm2.io/
-------------usage: pm2 [options] <command>
pm2 -h, --help all available commands and options
pm2 examples display pm2 usage examples
pm2 <command> -h help on a specific commandAccess pm2 files in ~/.pm2
4.2 使用
4.2.1 常用命令
命令 | 說明 |
---|---|
pm2 startup | 設(shè)置pm2開機(jī)自啟動(dòng) |
pm2 unstartup | 移除pm2開機(jī)自啟動(dòng) |
pm2 save | 保存當(dāng)前進(jìn)程開機(jī)自啟動(dòng) |
pm2 start <進(jìn)程啟動(dòng)命令> [--name <進(jìn)程名>] | 啟動(dòng)應(yīng)用程序 |
pm2 list | 顯示所有進(jìn)程狀態(tài) |
pm2 monit | 監(jiān)控進(jìn)程 |
pm2 logs [進(jìn)程id或名字] | 顯示進(jìn)程日志 |
pm2 stop [all] | 停止[所有]進(jìn)程 |
pm2 restart [all] | 重啟[所有]進(jìn)程 |
pm2 delete [<進(jìn)程名或者id>,all] | 刪除指定[所有]進(jìn)程 |
pm2 info [進(jìn)程id或名字] | 查看應(yīng)用程序信息 |
官方文檔:http://pm2.keymetrics.io/docs/usage/quick-start/
五. 使用 pm2 守護(hù) ASP.NET Core 應(yīng)用程序
5.1 創(chuàng)建一個(gè) webapi 項(xiàng)目
# 創(chuàng)建項(xiàng)目 dotnet new webapi --no-https -o testwebapi # 發(fā)布項(xiàng)目 cd testwebapi/ dotnet publish -c Release cd bin/Release/netcoreapp2.1/publish # 運(yùn)行項(xiàng)目 dotnet testwebapi.dll
運(yùn)行成功會(huì)有如下輸出:
5.2 使用pm2守護(hù)
5.2.1 啟動(dòng)
結(jié)束我們剛剛運(yùn)行的程序,就在我們剛剛的目錄執(zhí)行下面的命令:
pm2 start "dotnet testwebapi.dll" --name testwebapi
執(zhí)行成功:
我們可以清晰的看到我們的應(yīng)用程序的 pid、運(yùn)行狀態(tài)、重啟次數(shù)(應(yīng)用程序崩潰重啟/手動(dòng)重啟)、運(yùn)行時(shí)間、cpu和內(nèi)存占用等。十分方便
使用 curl 訪問 api 檢查是否運(yùn)行成功:
curl http://localhost:5000/api/values
5.2.2 查看日志
pm2 logs testwebapi
5.2.3 查看應(yīng)用程序信息
pm2 info testwebapi
5.2.4 監(jiān)控應(yīng)用程序
pm2 monit testwebapi
5.2.3 重啟策略
pm2 會(huì)在你的應(yīng)用程序異常退出時(shí),自動(dòng)幫你重啟,所謂異常退出,指退出代碼非0。
測試:
修改 ValueController 添加退出代碼為1的代碼:
發(fā)布,并使用 pm2 啟動(dòng)(此處略)。
通過 pm2 list
查詢應(yīng)用程序重啟次數(shù)為0:
訪問 api 觸發(fā)異常退出:
curl http://localhost:5000/api/values
再次通過 pm2 list
命令查詢可以發(fā)現(xiàn)重啟了:
感謝各位的閱讀!關(guān)于“使用pm2守護(hù).NET Core應(yīng)用程序的案例”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。