数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类全部分类技术牛文全部分类教程最新网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销开发数据库服务器系统虚拟化云计算嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

如何使用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进程管理工具。

看到这里,可能有童鞋会有疑问,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

运行成功会有如下输出:

5.2 使用pm2守护

5.2.1 启动

结束我们刚刚运行的程序,就在我们刚刚的目录执行下面的命令:

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

执行成功:

我们可以清晰的看到我们的应用程序的 pid、运行状态、重启次数(应用程序崩溃重启/手动重启)、运行时间、cpu和内存占用等。十分方便

使用 curl 访问 api 检查是否运行成功:

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

5.2.2 查看日志

pm2 logs testwebapi

5.2.3 查看应用程序信息

pm2 info testwebapi

5.2.4 监控应用程序

pm2 monit testwebapi

5.2.3 重启策略

pm2 会在你的应用程序异常退出时,自动帮你重启,所谓异常退出,指退出代码非0。

测试:

修改 ValueController 添加退出代码为1的代码:

发布,并使用 pm2 启动(此处略)。

通过 pm2 list查询应用程序重启次数为0:

访问 api 触发异常退出:

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

再次通过 pm2 list命令查询可以发现重启了:

六.结束

pm2 这个工具相对于 Supervisor 和 nohup 来说,对于Supervisor,没有配置,不用输很长的命令;对于 nohup 管理进程方便。欢迎大家与我交流。

pm2官方文档

CentOS 7 源码编译安装 NodeJS by 晓晨Master

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。


  • 本文相关:
  • asp.net 客户端浏览器缓存的http头介绍
  • 解析xhtml源码的dll组件anglesharp介绍
  • c#后台修改前台dom的css属性示例代码
  • asp.net禁用页面缓存的方法总结
  • 生成多字段排序分页的sql的通用类
  • asp.net和ajax实现智能搜索功能代码
  • asp.net控制tomcat启动关闭的实现方法
  • asp.net下cache 缓存操作类代码
  • 扩展了repeater控件的emptydatatemplate模板功能
  • asp.net(c#)中给控件添加客户端js事件的方法
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved