SpringBoot 应用开发完成后,在生产环境部署后,每隔一段时间应用会挂一次,无缘无故突然就挂了…
日志也看不出什么东西:
10:20:56.897 INFO o.s.s.c.ThreadPoolTaskScheduler [218] - Shutting down ExecutorService 'taskScheduler'
10:20:56.897 INFO o.s.s.c.ThreadPoolTaskExecutor [218] - Shutting down ExecutorService 'applicationTaskExecutor'
10:20:56.901 INFO c.alibaba.druid.pool.DruidDataSource [2003] - {dataSource-1} closing ...
10:20:56.901 INFO c.alibaba.druid.pool.DruidDataSource [2003] - {dataSource-1} closing ...
10:20:56.906 INFO c.alibaba.druid.pool.DruidDataSource [2075] - {dataSource-1} closed
10:20:56.906 INFO c.alibaba.druid.pool.DruidDataSource [2075] - {dataSource-1} closed
最后找到原因是,使用ssh客户端远程连接服务器启动,ssh客户端窗口长时间不操作会自动断开连接,导致jar包挂掉,无法访问。在启动jar包时加 nohup命令可以避免这种情况。
nohup java -jar xxx.jar > xxx.log 2>&1 &
nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
- nohup 是 no hang up 的缩写,就是不挂断的意思。
- nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
- 在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
参考:
https://blog.csdn.net/shadow_zed/article/details/102812261
https://www.oschina.net/question/3292401_2280551?sort=default
https://www.cnblogs.com/superjt/p/4079013.html