前言
手上有一个测试服务器,内存是8G,最近开始搭起微服务的软件架构,单个Spring Boot 服务内存占用有点大,比如一个RocketMq的消费者服务(单独运行的服务),启动占用了 500M 内存,导致我后面想运行其他服务,内存不够,触发了 Linux 的 OOM - Killer 机制
Linux杀死了我们的进程,但 nohup.out 没有记录任何东西,我们的linux发生的都在记录/var/log下,通过下面命令查看被杀死进程信息
dmesg | egrep -i -B100 'killed process

最近内存的确有点吃紧,上面只需要关注第二个 anno-rss 实际占用内存(被Kill前),现在有两个方向一个是不做微服务,第二个是给Spring Boot 项目瘦身√
下面以我们的RocketMQ消费者为例,看看没有优化前直接启动占用多少实际内存
# 启动命令
nohup java -jar /usr/****/jar/consumer-rocketmq/target/consumer-rocketmq-2.0.1.RELEASE.jar &
# 获取进程号23371的pid和启动参数,rss实际占用内存(kB),vsz允许最大内存,

本文介绍了如何针对一个8GB内存的Linux服务器上运行的Spring Boot服务进行内存调优,以防止触发Linux的OOM-Killer机制。以一个RocketMQ消费者服务为例,调整JVM参数,观察内存占用情况,分析Java进程堆栈,探讨进一步优化的可能性。通过减少线程堆栈大小等手段尝试减小内存占用,同时提供了相关参考资料供深入研究。
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



