背景:

紧接上一次:Kubernetes 运行java程序无法使用jmap,jstack的解决方案。环境中集成了tini,完成了pid 不是1,可以调试的目的。

question:

现在实际压测中出现一个问题:容器在压测中内存的limit,request都设置了8g但是只能使用4g….据我所知貌似java的进程默认就是这样的?小伙伴让我设置一个-Xmx6144m -Xms6144m 的参数。有点方了。问了他下是不是要设置成全部内存的80%。得到了肯定的回答,然后修改Dockerfile如下:

  1. FROM openjdk:8-jdk-alpine
  2. VOLUME /tmp
  3. ENV TZ=Asia/Shanghai
  4. RUN apk add --no-cache tini
  5. RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  6. ADD target/xxxx-0.0.1-SNAPSHOT.jar xxxx-0.0.1-SNAPSHOT.jar
  7. RUN sh -c 'touch /xxxx-0.0.1-SNAPSHOT.jar'
  8. ENV JAVA_OPTS=""
  9. ENV JVM_OPTS="-XX:MaxRAMPercentage=80.0"
  10. ENTRYPOINT ["tini", "--","sh", "-c", "java $JVM_OPTS $JAVA_OPTS -verbose:gc -Xms2048m -Dio.netty.leakDetectionLevel=paranoid -XX:+PrintGCDetails -Djava.security.egd=file:/dev/./urandom -jar /xxxx-0.0.1-SNAPSHOT.jar"]

其他的忽略 主要就是ENV JVM_OPTS=”-XX:MaxRAMPercentage=80.0” 跑起来就可以了。