多个 jar 包项目部署在同一台服务器上,当服务器配置低,内存不足时,有可能出现 nohup java -jar 启动的进程就莫名其妙挂掉的问题。
解决方式:
第一种方法:进行JVM调优可以改善这种情况,但是项目太多,我们的个人服务器配置实在太低,仍然无法解决此问题,这里不做讨论了。
第二种方法:我们可以通过分配虚拟内存的方式解决,操作如下:
(1)查看当前内存使用情况
free -m
(2)划分虚拟内存分区(大小为2G),执行命令会卡一小会无响应
dd if=/dev/zero of=/var/swap bs=1024 count=2048000
(3)分别执行下面两条命令: 将分区设置为SWAP分区,并将其设置为有效状态
mkswap /var/swap
swapon /var/swap
(4)再次查看内存使用情况
free -m
Swap 虚拟内存中已经由 0 变成了 1999,说明我们已经成功分配了大约 2G 的虚拟内存。接下来启动多个项目看一下能不能正常使用Swap的虚拟内存
。。。。 启动项目中 。。。。
(5)启动完项目后,执行: ps aux | grep java 查看所有服务,看看是否还会再挂,一般就不会了。
(6)这样配置,每次服务器重启,就没了,所以设置开机自动挂载 Swap 分区,编辑文件 /etc/fstab,在下面加入:/var/swap swap swap default 0 0
vim /etc/fstab
/var/swap swap swap default 0 0
最后保存即可