使用pm2来保证Spring Boot应用稳定运行
Spring Boot开发web应用就像开发普通的java程序一般简洁,因为其内嵌了web容易,启动的时候只需要一条命令java -jar server.jar
即可,非常方便。
但是由此而来的问题是万一应用挂了怎么办?
别担心,有pm2进程管理工具可以帮到你。
PM2简介
pm2原先是nodejs应用的进程管理工具,不过其良好的设计以及扩展性可以手动执行执行进程。
PM2安装
1.安装NodeJs
npm install pm2 -g
PM2基本命令
- pm2 list 查看所有被PM2管理的进程列表
- pm2 start xxx 启动一个应用
- pm2 stop xxx 停止一个应用
- pm2 restart xxx 重启一个应用
- pm2 describe xxx 查看应用详情
- pm2 startup, pm2 save 两条命令,用来保证服务器启动时,pm2管理的程序自动运行
Java程序处理
在jar的同级目录新建应用启动配置文件,如pm2.json
,内容如下:
{
"name": "my-server",
"script": "/usr/bin/java",
"args": [
"-jar",
"server.jar"
],
"exec_interpreter": "",
"exec_mode": "fork"
}
说明如下:
- name 进程名称(显示在
pm2 list
命令中) - script 执行进程名称,如果需要执行PHP脚本则填写php解释器的路径,本文为java
- args 传给执行进程的参数,多个参数以数组单元分割
- exec_interpreter NodeJs解析器,本文不适用
- exec_mode 执行模式[cluster|fork]这个针对NodeJs应用的配置,非NodeJs应用统一fork
配置文件完成后,使用
pm2 start pm2.json
即可看到应用被启动
日志管理
日志路径在~/.pm2/logs
,stdout
和stderr
被分开存放,程序中的所有stdout
和stderr
都被收集方便查错。
cat project-cogrowth-api.json
{
"name": "cogrowth-api",
"script": "java",
"args": [
"-Xms64m",
"-Xmx512m",
"-Dspring.profiles.active=pub",
"-jar",
"cogrowth-api-1.0.jar",
],
"exec_interpreter": "",
"exec_mode": "fork"
}
使用pm2来保证Spring Boot应用稳定运行的更多相关文章
- spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext
spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext 学习了: http ...
- spring boot项目后台运行
spring boot项目后台运行 Spring Boot应用的几种运行方式: (1)运行Spring Boot的应用主类 (2)使用Maven的Spring Boot插件mvn spring-boo ...
- Spring Boot + Dubbo 可运行的例子源码-实现服务注册和远程调用
最近公司的一个分布式系统想要尝试迁移到Dubbo,项目本身是Spring Boot的,经过一些努力,最终也算是搭建起一个基础的框架了,放到这里记录一下.需要依赖一个外部的zookeeper. 源码地址 ...
- 让你的Spring Boot应用快速运行在Docker上面
前置条件: 1. 服务器(我这边是CentOS7)上已经安装了Docker(安装步骤很简单,可以参考我上一篇博客) 2.服务器上已经安装了Java和Maven 在满足以上条件后,我们就可以开始了: 1 ...
- 通过监控线程状态来保证socket服务器的稳定运行
云平台中使用的socket服务器是我们自己定义一套通信协议,并通过C#实现的一个socket服务. 该服务目前是和web服务一起运行在IIS容器中,通过启动一个永不退出的新线程来监听端口. 在开发的初 ...
- spring boot 启动时运行代码(2)ApplicationListener
项目概览: StepExecutor: @Component @Slf4j public class StepExecutor implements Runnable { @Autowired pri ...
- spring boot 系统启动时运行代码(1)-@PostConstruct
Application.java import org.springframework.boot.SpringApplication; import org.springframework.boot. ...
- spring boot 长时间运行上传报临时目录找不到
The temporary upload location [/tmp/tomcat-docbase.3752410576653354473.8899/work/Tomcat/localhost/RO ...
- Spring boot jar 后台运行
start(){ now=`date "+%Y%m%d%H%M%S"` exec java -Xms256m -Xmx512m -jar /alidata/server/webap ...
随机推荐
- jsp请求转发与重定向区别小结
1.当使用转发时,JSP容器将使用一个内部方法来调用目标页面,新的页面继续处理同一个请求,而浏览器不会知道这个过程; 2.重定向是第一个页面通知浏览器发送一个新的页面请求. 3.转发不改变URL,重定 ...
- linux下的mysql
1.到下面地址下载通用二进制包 wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.53-linux2.6-x86_64.tar.gz 2.具 ...
- Vue编译提示警告
There are multiple modules with names that only differ in casing.有多个模块同名仅大小写不同This can lead to unexp ...
- 51单片机小项目电路TwoLed电路图
1.复位电路没有开关,不可控 在电容旁边并联一个开关和10k的电阻支路 2.晶振电路引用的外部晶振, 理论上XTAL2悬空,XTAL1接外部震荡信号 //ProjeceName:TwoLed //wr ...
- HttpConnection详解【转】
HttpConnection详解[转] HttpURLConnection对象 1.从Internet获取网页,发送请求,将网页以流的形式读回来. 步骤:1)创建一个URL对象:URL url ...
- 神州数码OSPF Stub(末梢区域)和Totally Stub(完全末梢区域)的配置
实验要求:了解末梢区域及完全末梢区域的配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface l0 进入端口 ip addr ...
- linux do{} while(0)
do{}while(0) 在linux中,经常会看到do{}while(0)这样的语句,许多人开始都会疑惑,认为do{}while(0)毫无意义,因为它只会执行一次,加不加do{}while(0)效果 ...
- 机器视觉:SSD Single Shot MultiBox Detector
今天介绍目标检测中非常著名的一个框架 SSD,与之前的 R-CNN 系列的不同,而且速度比 YOLO 更快. SSD 的核心思想是将不同尺度的 feature map 分成很多固定大小的 box,然后 ...
- 框架tensorflow1
TensorFlow 1 分类: 1,protocol Buffer 处理结构化数据工具: (xml,json) 2,Bazel 自动化构建工具, 编译: tensor 张量: ...
- 01bootstrap_基本结构和布局
01bootstrap_基本结构 学习bootstrap需要下载必要的文件:www.bootcss.com 基本结构 container page-header 布局 1.响应式布局:containe ...