问题描述:
服务器配置比较低,导致部署在docker里的微服务占用内存太大部分本奎,就想调整下jvm参数优化下,又网上很多调整JVM参数的方法不能用或者调整后不生效,参考多篇文章后总结一个方法。
推荐 使用解决方式2
解决方案1:
1、docker-compose.yml 里加上environment的配置,如下:
version : '2.1'
services:
one-service:
image: java:8
volumes:
- ./porject:/springboot
privileged: true
ports:
- "21273:80"
restart: always
container_name: onne-service
environment:
- TZ=Asia/Shanghai
- JAVA_OPTS= #-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn512m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70
command:
- /bin/bash
- -c
- |
cd /springboot
java ${JAVA_OPTS} -jar spring-boot-1.0.jar
networks:
- public_network
2、执行
docker-compose up -d one-service
启动之后,查看是否启动成功,可以执行如下命令:
- 进入容器:docker exec -it 容器ID bash
直接输入 top 命令,如显示如下说明成功了:
1、如果没有显示JVM参数,
执行如下命令:
jps -v
如果JVM参数依然为默认参数的话就说明我们的配置没有生效,我们需要使用解决方案2来处理。
解决方案2
1、在启动类的位置新增一个文件: run.sh
vim run.sh
将如下内容添加进去并保存文件
#!/bin/sh
java ${JAVA_OPTS} -jar spring-boot-1.0.jar
2、修改一下 docker-compose.yml:
version : '2.1'
services:
one-service:
image: java:8
volumes:
- ./porject/dhis-base:/springboot
privileged: true
ports:
- "21273:80"
restart: always
container_name: onne-service
environment:
- TZ=Asia/Shanghai
- JAVA_OPTS= #-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn512m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70
command:
- /bin/bash
- -c
- |
cd /springboot
exec ./run.sh #使用脚本的方式启动项目,这样启动的话pid就不是1了
networks:
- public_network
PS: 如果启动报没有权限,给文件
run.sh
赋权限,执行如下:
chmod -R 777 run.sh
2、执行 docker-compose up -d one-service 再次启动,进入容器:
在容器内执行:
jps -v
JVM参数已经变成我们自己设置的参数了
参考
- https://blog.csdn.net/qq_44757149/article/details/127726727