欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用pm2守護(hù)你的.NET Core應(yīng)用程序詳解

 更新時(shí)間:2018年10月13日 08:38:53   作者:李志強(qiáng)  
pm2是nodejs的一個(gè)帶有負(fù)載均衡功能的應(yīng)用進(jìn)程管理器的模塊,下面這篇文章主要給大家介紹了關(guān)于如何使用pm2守護(hù)你的.NET Core應(yīng)用程序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一.守護(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)程可以通過(guò)一系列信號(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)程來(lái)管控我們的 .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)程,通過(guò)這種管控方式讓我們的應(yīng)用程序后臺(tái)運(yùn)行。nohup 顧名思義,就是不向會(huì)話進(jìn)程發(fā)送hup信號(hào)。

在這里我就搬出本文的主角 pm2,通過(guò) pm2 來(lái)讓進(jìn)程后臺(tái)運(yùn)行。

三. pm2介紹

pm2 從名字上和我們平時(shí)在生活中接觸到的 pm2.5 有點(diǎn)像,不過(guò)他們可不是一個(gè)東西。做 nodejs 開(kāi)發(fā)的童鞋可能對(duì) pm2 比較熟悉,pm2 是一個(gè)高級(jí)nodejs進(jìn)程管理工具。

看到這里,可能有童鞋會(huì)有疑問(wèn),nodejs進(jìn)程管理工具怎么管理 .NET Core 進(jìn)程?博主經(jīng)過(guò)長(zhǎng)期的在 Linux 下的摸爬滾打,最終發(fā)現(xiàn)使用pm2來(lái)守護(hù) .NET Core 進(jìn)程完全沒(méi)有問(wèn)題,除了 nodejs 其他的很多程序都是可以的。而且無(wú)需繁瑣的配置,安裝、使用、管理進(jìn)程都非常簡(jiǎn)單,這是我選擇它的主要原因。

這里需要說(shuō)明一下是使用 pm2 來(lái)讓進(jìn)程后臺(tái)運(yùn)行,因?yàn)槿绻皇?nodejs 程序, pm2的一些為nodejs準(zhǔn)備的功能可能是無(wú)法使用的,但是對(duì)于我們守護(hù) .NET Core 應(yīng)用程序足夠了。

四.pm2的安裝以及使用

4.1 安裝

4.1.1 安裝 nodejs

使用pm2需要安裝nodejs,這個(gè)網(wǎng)上很多資料,就不再本文詳細(xì)說(shuō)明了,我前面寫(xiě)過(guò)一篇在 Centos 7下安裝的文章,傳送門(mén)。

4.1.2 安裝 pm2

npm install pm2 -g

就一句話,是不是很簡(jiǎn)單。安裝成功以后使用命令 pm2來(lái)檢查是否安裝成功,你會(huì)看到如下輸出:

-------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__


Runtime Edition

PM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.

Start and Daemonize any application:
$ pm2 start app.js

Load Balance 4 instances of api.js:
$ pm2 start api.js -i 4

Monitor in production:
$ pm2 monitor

Make pm2 auto-boot at server restart:
$ pm2 startup

To 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 command

Access pm2 files in ~/.pm2

4.2 使用

4.2.1 常用命令

命令 說(shuō)明
pm2 startup 設(shè)置pm2開(kāi)機(jī)自啟動(dòng)
pm2 unstartup 移除pm2開(kāi)機(jī)自啟動(dòng)
pm2 save 保存當(dāng)前進(jìn)程開(kāi)機(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 訪問(wèn) 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。

測(cè)試:

修改 ValueController 添加退出代碼為1的代碼:

發(fā)布,并使用 pm2 啟動(dòng)(此處略)。

通過(guò) pm2 list查詢應(yīng)用程序重啟次數(shù)為0:

訪問(wèn) api 觸發(fā)異常退出:

curl http://localhost:5000/api/values

再次通過(guò) pm2 list命令查詢可以發(fā)現(xiàn)重啟了:

六.結(jié)束

pm2 這個(gè)工具相對(duì)于 Supervisor 和 nohup 來(lái)說(shuō),對(duì)于Supervisor,沒(méi)有配置,不用輸很長(zhǎng)的命令;對(duì)于 nohup 管理進(jìn)程方便。歡迎大家與我交流。

pm2官方文檔

CentOS 7 源碼編譯安裝 NodeJS by 曉晨Master

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • MVC異常處理詳解

    MVC異常處理詳解

    這篇文章主要為大家詳細(xì)介紹了MVC異常處理的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • ASP.NET Core使用SkiaSharp實(shí)現(xiàn)驗(yàn)證碼的示例代碼

    ASP.NET Core使用SkiaSharp實(shí)現(xiàn)驗(yàn)證碼的示例代碼

    本篇文章主要介紹了ASP.NET Core使用SkiaSharp實(shí)現(xiàn)驗(yàn)證碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Asp.net禁用頁(yè)面緩存的方法總結(jié)

    Asp.net禁用頁(yè)面緩存的方法總結(jié)

    這篇文章主要介紹了Asp.net禁用頁(yè)面緩存的方法,需要的朋友可以參考下
    2014-02-02
  • ASP.NET中使用Ajax的方法

    ASP.NET中使用Ajax的方法

    之前在Ajax初步理解中介紹了對(duì)Ajax的初步理解,本文將介紹在ASP.NET中如何方便使用Ajax,第一種當(dāng)然是使用jQuery的ajax,功能強(qiáng)大而且操作簡(jiǎn)單方便,第二種是使用.NET封裝好的ScriptManager
    2013-10-10
  • asp.net 水晶報(bào)表隔行換色實(shí)現(xiàn)方法

    asp.net 水晶報(bào)表隔行換色實(shí)現(xiàn)方法

    水晶報(bào)表隔行換色實(shí)現(xiàn)方法,需要的朋友可以參考下。
    2009-11-11
  • .Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解

    .Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解

    這篇文章主要給大家介紹了.Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • asp.net URL 顯示亂碼 解決方法

    asp.net URL 顯示亂碼 解決方法

    剛剛接觸網(wǎng)頁(yè)開(kāi)發(fā),不過(guò)遇到URR參數(shù)傳遞錯(cuò)誤的問(wèn)題,兩個(gè)頁(yè)面進(jìn)行信息交互時(shí)可以用url進(jìn)行傳遞,但是如果傳遞信息的編碼格式不是UTF-8(或者不是設(shè)置的默認(rèn)格式)URL傳遞時(shí)會(huì)出現(xiàn)亂碼。
    2009-06-06
  • ASP.NET MVC下Ajax.BeginForm方式無(wú)刷新提交表單實(shí)例

    ASP.NET MVC下Ajax.BeginForm方式無(wú)刷新提交表單實(shí)例

    下面小編就為大家分享一篇ASP.NET MVC下Ajax.BeginForm方式無(wú)刷新提交表單實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • ASP.NET讀取RSS的方法

    ASP.NET讀取RSS的方法

    這篇文章主要介紹了ASP.NET讀取RSS的方法,非常實(shí)用的技巧,需要的朋友可以參考下
    2014-08-08
  • ASP.NET圖片上傳實(shí)例(附源碼)

    ASP.NET圖片上傳實(shí)例(附源碼)

    這篇文章主要介紹了一個(gè)ASP.NET圖片上傳實(shí)例,文章還為大家提供了ASP.NET圖片自動(dòng)上傳和局部刷新顯示的源碼,希望大家喜歡
    2015-11-11

最新評(píng)論