亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用pm2守護.NET Core應用程序的案例

發布時間:2021-02-07 13:44:40 來源:億速云 閱讀:270 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關使用pm2守護.NET Core應用程序的案例的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一.守護進程的前世今生

守護進程,英文名:“daemon",也有守護神的意思。守護進程是一個在后臺運行并且不受任何終端控制的進程,不會隨著會話結束而退出。諸如 mysql、apache 等這類程序默認就提供了守護進程或者以守護進程的方式工作,我們熟悉的 “mysqld”、"httpd" 等其中的 d 就是 daemon 的意思。比如我們在 Linux 系統上以命令 dotnet xxx.dll 運行 .NET Core 應用程序時,如果我們結束會話,那么我們的程序將會結束運行。其原因是 Linux 系統中有一個信號機制,進程可以通過一系列信號進行通信,當用戶結束會話時,會向當前會話的子進程發送一個 HUP 信號,一般情況下當前會話的子進程收到HUP信號以后就會退出自己。 這時我們就需要一個守護進程來管控我們的 .NET Core 應用程序進程。

二.讓進程后臺運行

Linux 下讓進程后臺方式很多,舉栗子:Supervisor、Screen、nohup 命令 等等。Supervisor 是自己創建了一個守護進程,然后讓我們的應用程序進程成為其子進程,通過這種管控方式讓我們的應用程序后臺運行。nohup 顧名思義,就是不向會話進程發送hup信號。

在這里我就搬出本文的主角 pm2,通過 pm2 來讓進程后臺運行。

三. pm2介紹

pm2 從名字上和我們平時在生活中接觸到的 pm2.5 有點像,不過他們可不是一個東西。做 nodejs 開發的童鞋可能對 pm2 比較熟悉,pm2 是一個高級nodejs進程管理工具。

使用pm2守護.NET Core應用程序的案例

看到這里,可能有童鞋會有疑問,nodejs進程管理工具怎么管理 .NET Core 進程?博主經過長期的在 Linux 下的摸爬滾打,最終發現使用pm2來守護 .NET Core 進程完全沒有問題,除了 nodejs 其他的很多程序都是可以的。而且無需繁瑣的配置,安裝、使用、管理進程都非常簡單,這是我選擇它的主要原因。

這里需要說明一下是使用 pm2 來讓進程后臺運行,因為如果不是 nodejs 程序, pm2的一些為nodejs準備的功能可能是無法使用的,但是對于我們守護 .NET Core 應用程序足夠了。

四.pm2的安裝以及使用

4.1 安裝

4.1.1 安裝 nodejs

使用pm2需要安裝nodejs,這個網上很多資料,就不再本文詳細說明了,我前面寫過一篇在 Centos 7下安裝的文章,傳送門。

4.1.2 安裝 pm2

npm install pm2 -g

就一句話,是不是很簡單。安裝成功以后使用命令 pm2來檢查是否安裝成功,你會看到如下輸出:

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

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


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 常用命令

命令說明
pm2 startup設置pm2開機自啟動
pm2 unstartup移除pm2開機自啟動
pm2 save保存當前進程開機自啟動
pm2 start <進程啟動命令> [--name <進程名>]啟動應用程序
pm2 list顯示所有進程狀態
pm2 monit監控進程
pm2 logs [進程id或名字]顯示進程日志
pm2 stop [all]停止[所有]進程
pm2 restart [all]重啟[所有]進程
pm2 delete [<進程名或者id>,all]刪除指定[所有]進程
pm2 info [進程id或名字]查看應用程序信息

官方文檔:http://pm2.keymetrics.io/docs/usage/quick-start/

五. 使用 pm2 守護 ASP.NET Core 應用程序

5.1 創建一個 webapi 項目

# 創建項目
dotnet new webapi --no-https -o testwebapi
# 發布項目
cd testwebapi/
dotnet publish -c Release
cd bin/Release/netcoreapp2.1/publish
# 運行項目
dotnet testwebapi.dll

運行成功會有如下輸出:

使用pm2守護.NET Core應用程序的案例

5.2 使用pm2守護

5.2.1 啟動

結束我們剛剛運行的程序,就在我們剛剛的目錄執行下面的命令:

pm2 start "dotnet testwebapi.dll" --name testwebapi

執行成功:

使用pm2守護.NET Core應用程序的案例

我們可以清晰的看到我們的應用程序的 pid、運行狀態、重啟次數(應用程序崩潰重啟/手動重啟)、運行時間、cpu和內存占用等。十分方便

使用 curl 訪問 api 檢查是否運行成功:

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

使用pm2守護.NET Core應用程序的案例

5.2.2 查看日志

pm2 logs testwebapi

使用pm2守護.NET Core應用程序的案例

5.2.3 查看應用程序信息

pm2 info testwebapi

使用pm2守護.NET Core應用程序的案例

5.2.4 監控應用程序

pm2 monit testwebapi

使用pm2守護.NET Core應用程序的案例

5.2.3 重啟策略

pm2 會在你的應用程序異常退出時,自動幫你重啟,所謂異常退出,指退出代碼非0。

測試:

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

使用pm2守護.NET Core應用程序的案例

發布,并使用 pm2 啟動(此處略)。

通過 pm2 list查詢應用程序重啟次數為0:

使用pm2守護.NET Core應用程序的案例

訪問 api 觸發異常退出:

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

再次通過 pm2 list命令查詢可以發現重啟了:

使用pm2守護.NET Core應用程序的案例

感謝各位的閱讀!關于“使用pm2守護.NET Core應用程序的案例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝鸡市| 乳源| 银川市| 乐东| 焦作市| 湖口县| 松江区| 吴堡县| 嘉黎县| 嘉荫县| 大理市| 敦化市| 玉树县| 象山县| 江油市| 张掖市| 迁安市| 张家港市| 桓台县| 仪陇县| 皮山县| 丹东市| 新巴尔虎右旗| 南昌县| 弋阳县| 延寿县| 鸡西市| 河东区| 洛扎县| 漳州市| 巴楚县| 大竹县| 北安市| 西宁市| 内黄县| 宁武县| 天全县| 射阳县| 正安县| 安泽县| 辉县市|