使用SpringCloud实现的微服务软件开发部署到Linux上占用内存过大问题解决办法
-
问题描述
最近上线的一个使用JAVA的Spring Cloud开发的ERP软件,部署上线时发现很严重的内存资源占用过高问题,而实际上开发测试并没有很大的访问量,甚至却出现了服务器无法正常访问的现象。 -
原因分析
正常的我们一个接着一个的启动微服务,然后还没启动完成,发现ssh远程不响应,不能流畅的操作了,最开始以为是网络掉了,发现打开其他资源正常。重启服务器,然后监控服务器资源消耗情况,发现Spring Cloud的单个微服务部署到Linux系统服务器上时消耗的内存资源过大,在8G内存的linux系统服务器上启动单个占用的内存就达到1G左右。部署了6个左右的微服务,内存已经严重不够用了。在google看了下,很多人建议在eclipse或者idea上面进行jvm的参数设置:
但是,经过实际的部署验证发现,还是没有效果,这个本地开发测试时是应该是有用的。
最后发现根本原因是由于Spring-Boot工程的启动参数配置问题,其实spring boot生成的jar包就是一个普通的jar包,这个jar包的jvm参数必须要从java -jar 的命令中,赋值设置内存占用最大最小和初始值才有作用。
- 解决方案
在Linux系统的服务器上面,启动各个spring cloud的微服务jar包的时候,需要在java -jar
的命令中间增加jvm的内存参数设置:-Xms64m -Xmx128m
nohup java -Xms64m -Xmx128m -jar xxx.xxxx-xxx-xxxxxx.jar &
[root@iZuf692ot9nf1r9fn1unojZ ~]# nohup java -Xms64m -Xmx128m -jar erp-log-service.jar &
监控内存消耗,正常了。
分类:
SpringCloud
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)