使用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 ...
随机推荐
- M0内核的STM32实现比较精准的延时
#include "drv_delay.h"#include "core_cm0plus.h" //我的系统时钟设置为4MHz /*************** ...
- བྱ་དེ་ཁྲུང་ཁྲུང་དཀར་པོ།།--洁白的仙鹤/仓央嘉措情歌--IPA--藏语
<<洁白的仙鹤>>, 也就是大家熟悉的仓央嘉措情歌之一.
- web.xml配置以及一些详解
web.xml的根元素定义如下所示(代表当前使用哪个模版): <?xml version="1.0" encoding="UTF-8"?> < ...
- 解决启动vs2010 未能找到自动配置的设置文件
今天室友把固态拆掉,重新安上.打开vs2010出现 打开项目,出现 找了许多方法都无效. 发现c:user\Administer\documents\下,vs2010 .vs webset 那些文件点 ...
- Ubuntu Server 16.04设置WiFi
wifi :http://www.cnblogs.com/joeyupdo/p/3350463.html http://blog.csdn.net/meic51/article/details/173 ...
- How to create your iOS team provisioning profile ?
From Apple Developer: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppS ...
- xgboost中XGBClassifier()参数详解
http://www.cnblogs.com/wanglei5205/p/8579244.html 常规参数 booster gbtree 树模型做为基分类器(默认) gbliner 线性模型做为基分 ...
- excle中如何将一串数字前后加上单引号
1.新建excle表 2.构造如下一串字母加数字的字符串: 3.在B1栏中输入="“"&A1&"”",展示效果如下:
- POJ3017 Cut the Sequence
题意 Language:Default Cut the Sequence Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 122 ...
- 使用maven-tomcat7-plugins时调试出现source not found解决
直接看下面的步骤: 步骤1: 步骤2: 步骤3: 步骤4: