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

问题描述:

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

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

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

解决方法:

通过分配虚拟内存解决内存不足的问题,这是最简单有效的方法(其实你也可以通过设置jar包运行时分配的空间进行调优,但是项目比较多的话不推荐,仍然不能解决内存不足的问题)

这是我在参考了CSDN一位博主的博客之后,找到的解决方法

原文地址:https://blog.csdn.net/qq_39751120/article/details/94356085

通过给服务器虚拟出一个磁盘分区,当内存不足的时候,新的服务会挂载到虚拟分区上。这样保证系统不会kill掉先前运行的服务。

可以通过上述博主链接去参考分配空间的命令行,或者按照我下面的步骤来敲命令行(下面红色的字体就是需要执行的命令

步骤①:查看你服务器内存:   free -m

控制台输出:
[root@VM_0_9_centos ~]# free -m
                     total        used        free      shared  buff/cache   available
Mem:           1838        1632          72           0         133          59
Swap:                0              0            0


步骤②:建立虚拟分区:dd if=/dev/zero of=/opt/swap bs=1024 count=2048000

命令表示在opt分区建立名为swap,大小为2G的虚拟内存文件。敲击回车之后大约有10-20秒的无反应状态,等一会。

控制台输出:           

[root@VM_0_9_centos ~]# dd if=/dev/zero of=/opt/swap bs=1024 count=2048000

2048000+0 records in

2048000+0 records out

2048000000 bytes (2.0 GB)  copied, 13.16245 s ,155 MB/s

 

步骤③:将swap文件设置为swap分区文件:

chmod 600 /opt/swap

mkswap /opt/swap

步骤④:激活swap,启用分区交换文件

swapon /opt/swap

步骤⑤:查看分区结果

free -m


[root@VM_0_9_centos ~]# free -m
                     total        used        free      shared  buff/cache   available
Mem:           1838        1632          72           0         133          59
Swap:          1999              0      1999             

 

Swap.total大小就是你分配的虚拟内存大小,Swap.used是当前已使用的虚拟内存大小,Swap.free是空闲虚拟内存大小

到这里,分配完成,当内存不足时,linux也不会kill掉你的进程了。

当我启动多个服务之后:

[root@VM_0_9_centos ~]# free -m
                     total        used        free      shared  buff/cache   available
Mem:           1838        1632          72           0         133          59
Swap:          1999         228        1771
发现已经在Swap空间有内存被使用了。而且服务都正常运行

nohup java -jar 命令启动jar包,项目仍然会莫名其妙挂掉的解决方法_第1张图片

你可能感兴趣的:(服务挂掉,内存不足,java项目部署,springboot,springcloud,项目挂掉,内存不足,nohup)