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/logsstdoutstderr被分开存放,程序中的所有stdoutstderr都被收集方便查错。

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应用稳定运行的更多相关文章

  1. spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext

    spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext 学习了: http ...

  2. spring boot项目后台运行

    spring boot项目后台运行 Spring Boot应用的几种运行方式: (1)运行Spring Boot的应用主类 (2)使用Maven的Spring Boot插件mvn spring-boo ...

  3. Spring Boot + Dubbo 可运行的例子源码-实现服务注册和远程调用

    最近公司的一个分布式系统想要尝试迁移到Dubbo,项目本身是Spring Boot的,经过一些努力,最终也算是搭建起一个基础的框架了,放到这里记录一下.需要依赖一个外部的zookeeper. 源码地址 ...

  4. 让你的Spring Boot应用快速运行在Docker上面

    前置条件: 1. 服务器(我这边是CentOS7)上已经安装了Docker(安装步骤很简单,可以参考我上一篇博客) 2.服务器上已经安装了Java和Maven 在满足以上条件后,我们就可以开始了: 1 ...

  5. 通过监控线程状态来保证socket服务器的稳定运行

    云平台中使用的socket服务器是我们自己定义一套通信协议,并通过C#实现的一个socket服务. 该服务目前是和web服务一起运行在IIS容器中,通过启动一个永不退出的新线程来监听端口. 在开发的初 ...

  6. spring boot 启动时运行代码(2)ApplicationListener

    项目概览: StepExecutor: @Component @Slf4j public class StepExecutor implements Runnable { @Autowired pri ...

  7. spring boot 系统启动时运行代码(1)-@PostConstruct

    Application.java import org.springframework.boot.SpringApplication; import org.springframework.boot. ...

  8. spring boot 长时间运行上传报临时目录找不到

    The temporary upload location [/tmp/tomcat-docbase.3752410576653354473.8899/work/Tomcat/localhost/RO ...

  9. Spring boot jar 后台运行

    start(){ now=`date "+%Y%m%d%H%M%S"` exec java -Xms256m -Xmx512m -jar /alidata/server/webap ...

随机推荐

  1. 2015-10-21 C#1

    C#(一) 一.C#的数值类型 byte----字节型 short---短整型 int------整型 long----长整型 char----字符型 float----单精度型 double--双精 ...

  2. 主机连接虚拟机的mysql 记录

    检查远程的虚拟机是否可以ping通过 查看虚拟机IP为192.168.38.128 cmd窗口ping 192.168.38.128,出现如下界面说明是可以的 检查虚拟机mysql的端口号是否对外开通 ...

  3. mac上配置java开发环境

    项目在mac上跑起来的步骤: 1. 访问,https://brew.sh/  装上这个然后  brew install git  brew install maven, settings.xml需要放 ...

  4. SQL的decode()函数

    decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值2,翻译值2,.. ...

  5. spoj periodni

    题解: dp 方程弄出来就好做了 代码: #include<bits/stdc++.h> ,M=; typedef int arr[N]; typedef long long ll; in ...

  6. boot项目swagger接口调试工具默认访问路径

    今天第一次接触boot项目,项目里集成了swagger接口调试工具,以前写项目的时候在swagger 文件夹里可以找到访问路径,换成boot项目以后找不到swagger文件夹了,百度了一下,boot项 ...

  7. 升级nginx 和nchan

    #下载sudo wget http://nginx.org/download/nginx-1.14.0.tar.gzsudo wget https://github.com/slact/nchan/a ...

  8. eclipse工具类及插件(设置注释模板)

    (摘抄原地址)https://blog.csdn.net/xb12369/article/details/79850476(设置注释模板) 首先打开Eclipse配置选项:Window->Pre ...

  9. java基础(5)内部类

    1 成员内部类的定义和使用 public class Outer { private String name; public class Inner { public void innerMethod ...

  10. 安装Python 3.6 在Ubuntu 16.04 LTS 版本

    Collecting tensorflow Could not find a version that satisfies the requirement tensorflow (from versi ...