问题描述:

暑假期间在个人服务器(centos7)上部署springcloud项目。出现了服务莫名其妙会挂掉一两个的问题,重新启动挂掉的服务之后又会出现其他服务挂掉的情况,查看启动日志也并没有发现有异常抛出。令人费解的是所有的服务都是通过nohup java -jar xxx.jar &启动的,理论上不会随随便便挂掉。

产生原因:

一开始我猜测,是GC回收,导致服务挂掉。但并不是这么回事,GC虽然有STW现象,但是一般不会结束总进程。后面折腾了好几天,才发现,因为启动的jar包项目过多,服务器运行内存不足,linux系统kill掉了某些jar进程

因此,总结来说,多个springboot项目部署在同一台服务器上,都有可能出现nohup java -jar启动的进程仍莫名其妙挂掉的问题,如果是企业,应该换用更好的服务器配置,但是我们个人没有那么多资金购买服务器怎么办?其实有两种解决方法:

解决方法:

第一种方法:进行JVM调优可以改善这种情况,但是项目太多,我们的个人服务器配置实在太低,仍然无法解决此问题,这里不做讨论了。

第二种方法:我们可以通过分配虚拟内存的方式解决,下面红色的字体部分就是需要执行的命令

步骤一、查看当前的内存使用情况

free -m

步骤二、划分虚拟内存分区(大小为2G),执行命令大约15-20秒无响应

dd if=/dev/zero of=/var/swap bs=1024 count=2048000

步骤三、执行下面两条命令: 将分区设置为SWAP分区,并将其设置为有效状态

mkswap /var/swap

swapon /var/swap

步骤四、查看现在的内存使用情况

free -m

我们发现,Swap虚拟内存中已经由0变成了1999,说明我们已经成功分配了大约2G的虚拟内存。接下来让我们启动多个项目看一下能不能正常使用Swap的虚拟内存

大家可以看到,我已经启动了六个jar包项目,在Swap中,已经有内存被使用了,而且项目都在正常运行。问题得到解决!

步骤五、设置开机自动挂载虚拟内存

如果你不想每次重启服务器都重新设置一遍,那么你可以设置开机自动挂载Swap分区,编辑文件/etc/fstab

vim /etc/fstab

在文件最后追加内容:

/var/swap            swap                 swap       default               0 0

其中/var/swap就是我们刚刚分配的swap交换空间的位置,如果你不是在硬盘的这个位置划分的虚拟内存,只需把追加内容中的/var/swap换成你的虚拟内存的路径就可以了,剩下的追加内容不变。

nohup java -jar 命令启动jar包,项目仍然会莫名其妙挂掉的解决方法相关推荐

  1. java -jar命令启动jar包

    以命令方式启动jar包: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出. java -jar XXX.jar & ...

  2. nohup命令解决SpringBoot/java -jar命令启动项目运行一段时间自动停止问题

    nohup命令解决SpringBoot/java -jar命令启动项目运行一段时间自动停止问题 问题背景 有一个springboot项目,放在测试服务器跑,但是隔一段时间,就会GG,要搞清楚怎么回事. ...

  3. 命令启动jar包_java项目打jar包,一句命令搞定

    jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名 其中{ctxu}这四个参数必须选选其一. [v f m e 0 M i ]是可选参数,文件名也是必须 ...

  4. java -jar 工作原理_Spring Boot 的java -jar命令启动原理详解

    导语 在运用Spring Boot 后,我们基本上摆脱之前项目每次上线的时候把项目打成war包.当然也不排除一些奇葩的规定,必须要用war包上线,不过很多时候,我们对一些东西只是处在使用的阶段,并不会 ...

  5. java -jar命令运行jar包时指定外部依赖jar包

    大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口.具体的方法是修改jar包内目录META-INF下的MANIFE ...

  6. Java:Linux上java -jar xxx.jar命令执行jar包时出现Error: Invalid or corrupt jarfile xxx.jar解决方案

    Java:Linux上java -jar xxx.jar命令执行jar包时出现Error: Invalid or corrupt jarfile xxx.jar解决方案 参考文章: (1)Java:L ...

  7. java 运行jar包命令_用java –jar 命令运行Jar包

    摘要 这个技巧阐明了如何不直接处理清单文件而将一个不能运行jar包转换成一个可以执行的jar包.学会如何写一段转换jar包的程序,将你的jar包转换成你能使用java -jar 命令运行jar包或象在 ...

  8. java -jar 运行jar包_用java –jar 命令运行Jar包

    用java –jar 命令运行Jar包 摘要 这个技巧阐明了如何不直接处理清单文件而将一个不能运行jar包转换成一个可以执行的jar包.学会如何写一段转换jar包的程序,将你的jar包转换成你能使用j ...

  9. 用java –jar 命令运行Jar包

    摘要 这个技巧阐明了如何不直接处理清单文件而将一个不能运行jar包转换成一个可以执行的jar包.学会如何写一段转换jar包的程序,将你的jar包转换成你能使用java -jar 命令运行jar包或象在 ...

最新文章

  1. AI一分钟|特斯拉股价收跌近 5%,私有化引发市场疑虑;三星发布智能音箱Galaxy Home...
  2. Java问题排查工具箱
  3. Spring Boot 整合 Swagger
  4. Netflix:我们是如何评估Codec性能的?
  5. 西门子uss通讯实例_西门子plc1200系列的功能特点有哪些?
  6. 【转】多态与 new [C#]
  7. noip模拟9 达哥随单题
  8. java x86 x64_jdk x86与jdk x64 有什么区别
  9. BiliDuang(哔哩哔哩视频下载器)
  10. android 锁的使用教程,Android中对象锁
  11. vdi虚拟服务器,VMware VDI部署攻略之三:VDI安装及配置
  12. 软件测试速记口诀(一)<软件测试基础>
  13. M365 比较 WLB?而 Bing 加班很猛?我也吃了一鲸!
  14. 软件工程 学习笔记 知识梳理
  15. 【模拟IC】时钟馈通效应减小及仿真验证
  16. mysql去掉两个最高分_excel去掉两个(多个)最低分、最高分,求总(平均)分...
  17. Nodejs xlsx导出导出
  18. .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
  19. overflow:auto与scroll区别
  20. 云计算入门:FusionAccess桌面云解决方案

热门文章

  1. NO.119 不懂语言代码,超级菜鸟的建站分享(二):界面设置。
  2. Docker、Docker file、Docker-compose 详解
  3. 最全java面试题汇总(带答案)
  4. 计算机开机跳过硬盘检查,怎么取消开机自动检测硬盘磁盘检查,开机老是修复分区怎么办及原因...
  5. HC-05蓝牙模块简易说明
  6. android hud软件,手机HUD靠谱软件选哪些?_手机_手机生活应用-中关村在线
  7. 二叉树节点x所在的层数
  8. Anaconda安装中failed to create menus
  9. 【思考】阿里云的混合云战略,凭啥扯上Zstack?
  10. python相对导入常见问题和解决方案