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


已有 0 条评论

    欢迎您,新朋友,感谢参与互动!