当前位置: 首页 > news >正文

Java服务自动停止原因及查找方法

Java服务自动停止原因及查找方法

文章目录

  • Java服务自动停止原因及查找方法
    • 一:背景
    • 二:查看是否是由于内存不足造成的
    • 三:解决方法
        • 3.1、升级物理内存,设置JVM启动参数
        • 3.2、启用swap交换区作为虚拟内存
        • 3.3、参考:[Java服务自动停止原因查找方式](https://www.jb51.net/program/3066129g3.htm)

一:背景

最近发现服务java启动了几天就自己停了,然后查看了,是内存不足造成的。

二:查看是否是由于内存不足造成的

cd /var/log
cat messages* |grep java

image-20250816141354290

发现有:Out of memory: Kill process 58235 (java) score 231 or sacrifice child

由于内存不足,系统自动kill了java的进程

三:解决方法

3.1、升级物理内存,设置JVM启动参数
3.2、启用swap交换区作为虚拟内存

后来网上了解,如果服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内存的情况下,启用swap交换区作为虚拟内存是一个不错的选择。当然这个选择是在你对访问速度和缓存那些没什么要求的情况下,比如你自己测试玩的

虚拟内存一般设置为物理内存的2倍即可

新增swap分区

这里使用文件作为swap分区 ,下面操作需要在root用户下操作

使用 free -h 查看当前内存占用情况,可以看到物理内存所剩无几,下面的swap也是使用的文件作为虚拟内存使用的

image-20250816141603507

创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小),如下面是2G

# dd if=/dev/zero of=/root/swapfile2 bs=1M count=2048

image-20250816141635523

这里我使用的of为/root/swapfile2 ,可以看到该文件是新创建的,这时候这个文件还不能直接使用为swap文件

修改文件权限,如不修改,在启用swap文件的时候会提示下面信息(不影响使用,建议修改)

# chmod 0600 /root/swapfile2

image-20250816141657047

格式化为交换分区文件,建立swap的文件系统,/root/swapfile2需要与上面的of的值一致,这个目录可以自定义

# mkswap /root/swapfile2

image-20250816141855688

启用swap文件:

# swapon /root/swapfile2

image-20250816141917588

可以看到未启用时虚拟内存为2G,启用后内存增加了2G

使系统开机时自启用

# vim /etc/fstab

image-20250816142008130

在文件/etc/fstab中添加一行

/root/swapfile2 swap swap defaults 0 0

调整swap空间使用的优先级

如果内存够大,应当告诉 linux 不必太多的使用 SWAP 分区, 可以通过修改 swappiness 的数值。

swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

各个操作系统的优先级可能都不一样,如果不调整,你会发现添加的虚拟内存几乎没有用到

查看当前swappiness值

# cat /proc/sys/vm/swappiness

修改swappiness值为60(临时修改,重启后即还原为默认值)

# sudo sysctl vm.swappiness=60

image-20250816142109705

永久修改swappiness默认值(重启生效)

# vim /etc/sysctl.conf

找到vm.swappiness ,如果没有则需要手动添加一行 vm.swappiness = 60 保存即可

image-20250816142304298

3.3、参考:Java服务自动停止原因查找方式
http://www.dtcms.com/a/334356.html

相关文章:

  • Cloudflare Tunnels 部署与隧道异常关闭的解决方案
  • 攻击者如何毒害人工智能工具和防御系统
  • 【更新公告】C++算法·线段树
  • CF每日3题(1500-1700)
  • 《WINDOWS 环境下32位汇编语言程序设计》第2章 准备编程环境
  • IO流-序列化流
  • 记录 GMS 认证相关条件
  • 玄机靶场 | 日志分析-Tomcat日志分析
  • AI生成视频开源模型技术解析
  • Rocky Linux 9.2:从 /home 分区释放 10G 空间扩容到 / 根分区
  • AI可行性分析:数据×算法×反馈=成功
  • 【P40 6-3】OpenCV Python——图像融合(两张相同属性的图片按比例叠加),addWeighted()
  • 软考 系统架构设计师系列知识点之杂项集萃(124)
  • 池式结构之连接池
  • pwn定时器,ARM定时delay 外部中断用函数指针(统一)day55,56
  • 数据结构:满二叉树 (Full Binary Tree) 和 完全二叉树 (Complete Binary Tree)
  • 安卓定制开机动画的bootanimation.zip的注意点
  • (论文阅读)FedViT:边缘视觉转换器的联邦持续学习
  • 美国服务器环境下Windows容器工作负载基于指标的自动扩缩
  • Java驾驭金融风暴:大数据+机器学习重塑资产配置与风险平衡
  • CPP多线程3:async和future、promise
  • 【八股】计网-计算机网络-秋招
  • 让数据库交互更优雅:MyBatis核心机制深度解析(附实战视频教程)
  • 【DL学习笔记】常用数据集总结
  • 详解flink java基础(二)
  • 使用nvm查看/安装node版本
  • Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
  • 【科研绘图系列】R语言绘制雷达图
  • MySQL 配置性能优化赛技术指南
  • MySQL 配置性能优化赛技术文章