转载

docker-compose 调整JVM参数

问题描述:

服务器配置比较低,导致部署在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
正文到此结束
Loading...