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

news2024/12/23 7:02:36

问题描述:

在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换成你的虚拟内存的路径就可以了,剩下的追加内容不变。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/715825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2020年国赛高教杯数学建模C题中小微企业的信贷决策解题全过程文档及程序

2020年国赛高教杯数学建模 C题 中小微企业的信贷决策 原题再现 在实际中,由于中小微企业规模相对较小,也缺少抵押资产,因此银行通常是依据信贷政策、企业的交易票据信息和上下游企业的影响力,向实力强、供求关系稳定的企业提供贷…

MAYA过山车动画

创建骨骼 把小车模型放入到控制器里 有点问题,先建立一个组在试,没问题了

docker框架02docker的安装

01.这次的docker是在centos版本下的Linux系统中安装的。 02.输入命令 01.先去卸载就得版本 02.安装工具包,和设置镜像仓库 03.由于网络的问题,访问国内的阿里云镜像 修改: 04.更新索引和安装社区版的docker 05.启动docker 06.用命令d…

nginx开启http2导致的服务验证码不可用问题

问题描述: 新搭建了一套开源的系统。通过nginx做了https反向代理后无法显示验证码。 具体报错: Uncaught TypeError: Cannot read properties of null (reading ‘property’) 点击报错后跳转到方法: xhr.getAllResponseHeaders() 问题就出在这个方法&…

leetcode 206.反转链表

⭐️ 往期相关文章 ✨链接:数据结构-手撕单链表代码详解。 ⭐️ 题目描述 🌟 leetcode链接:反转链表 1️⃣ 代码: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* }…

html中input属性设置(合集)

html中input标签是常见的一个标签&#xff0c;下面由学习啦小编为大家整理了html中的input属性设置的相关知识&#xff0c;希望对大家有帮助! html中input属性设置总结 1、value 属性 value 属性规定输入字段的初始值&#xff1a; 实例 <form action""> F…

Day9操作系统基础——linux

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 linuxSSH黑客常用命令重难点 linux SSH 黑客常用命令 重难点 linux的相关操作指令

即时抽奖,即时开奖,技术上如何实现?(原来抽奖类的运营活动背后都是这么搞的)...

回答知识星球水友“self”提问。 需求抽象一下&#xff1a; &#xff08;1&#xff09;前100个人有资格&#xff0c;假设抽出N5个奖品&#xff1b; &#xff08;2&#xff09;报名就出奖&#xff0c;不用等100人到齐&#xff1b; &#xff08;3&#xff09;每个人概率一样&…

window debug ios webview

业务需求 在window上想要debug在ios的应用中的webview页面&#xff0c;毕竟页面是在安卓端和ios端都有webview的。安卓的页面使用edge的edge://inspect/#devices&#xff0c;手机开启调试模式就可以了。对于ios就没有办法&#xff0c;页面中已经使用了vconsole可以看到部分的信…

融云观察:社交大佬发家史,模仿才是终极成功学密码?

上周&#xff0c;多所高校因微信支付将收取手续费宣布暂停使用&#xff0c;微信致歉并称在校园非盈利场景将持续保持零费率。关注【融云全球互联网通信云】了解更多 微信的回应非常迅速&#xff0c;但还是多次冲上了热搜榜&#xff0c;可见对一个用户量超过 12 亿的社交巨头来…

fiddler弱网测试 和 Chrome浏览器弱网设置

文章目录 前言 一、fiddler弱网测试 二、Chrome浏览器弱网测试 步骤1&#xff1a;在Fiddler中启动弱网 步骤2&#xff1a;设置网络参数 步骤3&#xff1a;设置完成后&#xff0c;保存 三、弱网测试关注点 总结 前言 测试APP、web经常需要用到弱网测试&#xff0c;也就是…

2023年5月PETS5(WSK)考试经验分享

由于本人明年打算出国联培的缘故&#xff0c;CSC国家留学基金委需要申请人的语言成绩达到一定的要求 英语&#xff08;PETS5&#xff09;&#xff1a;笔试总分55分&#xff08;含&#xff09;以上&#xff0c;其中听力部分18分&#xff08;含&#xff09;以上&#xff0c;口试…

PyQt中资源文件的使用(详细步骤介绍)

新建文件&#xff1a; 在 Qt Creator&#xff0c;选中菜单 File->New File...&#xff0c;选择新建 Qt Resource File。 命名为res.qrc 在项目文件目录树中&#xff0c;会自动出现 Resources 文件组和 res.qrc 文件 添加资源记录&#xff1a; 在文件 res.qrc 上点击右键&a…

靶场DVWA未授权访问导致的RCE

1漏洞地址&#xff1a; http://xxxx.vom/vulnerabilities/exec/source/low.php 2漏洞原因&#xff1a; 命令执行直接拼接 3漏洞验证 linux写入phpinfo(); 到hackable/uploads/目录&#xff08;也可以直接写在当前目录&#xff09; 明文内容&#xff1a; 1&echo “<…

LeViT-UNet:transformer 编码器和CNN解码器的有效整合

levi - unet[2]是一种新的医学图像分割架构&#xff0c;它使用transformer 作为编码器&#xff0c;这使得它能够更有效地学习远程依赖关系。levi - unet[2]比传统的U-Nets更快&#xff0c;同时仍然实现了最先进的分割性能。 levi - unet[2]在几个具有挑战性的医学图像分割基准…

如何删除Linux下乱码文件

第一、使用 ls -i 命令获取文件的节点&#xff0c;如下图所示 第二、执行 find -inum 节点号 -delete 命令 删除成功。红色得就是节点号。

stm32烧录hal库固件后keil检测不到芯片,无法下载,但是按着复位键能下载和检测到芯片

keil检测不到芯片的原因有很多&#xff0c;我的原因是没有在stm32cubemx中配置下载方式 请检查stm32cubemx是否配置下载方式&#xff0c;我这里使用jlink的SWD模式进行下载&#xff0c;所以配置如下&#xff1a; 配置好后重新下载代码就可以检测到芯片了

浅析JS中变量前面的加号 + 的含义

javascript 中经常会看到在变量前面有个加号 &#xff0c;它有什么用处呢&#xff1f;其实很简单&#xff0c;就是把变量转换成 number 类型&#xff08;另外&#xff0c;变量 - 0 也是把变量的值转为数值的一种写法&#xff09;。话不多说&#xff0c;我们先看下面的几个例子…

MySQL数据库汇总

MySQL数据库必须掌握的知识点汇总 文章目录 1、三大范式2、DML 语句和 DDL 语句区别3、主键和外键的区别4、drop、delete、truncate 区别5、基础架构6、MyISAM 和 InnoDB 有什么区别&#xff1f;7、推荐自增id作为主键问题8、为什么 MySQL 的自增主键不连续9、redo log 是做什么…

Android Binder通信原理(八):IPC权限控制

源码基于&#xff1a;Android R 0. 前言 在之前的几篇博文中&#xff0c;对Android binder 的通信原理进行的深入的剖析&#xff0c;这些博文包括&#xff1a;binder 简介、servicemanager启动、service注册、service获取、Java 端的service 注册和获取、native下的C-S、java …