背景:
紧接上一次:Kubernetes 运行java程序无法使用jmap,jstack的解决方案。环境中集成了tini,完成了pid 不是1,可以调试的目的。
question:
现在实际压测中出现一个问题:容器在压测中内存的limit,request都设置了8g但是只能使用4g….据我所知貌似java的进程默认就是这样的?小伙伴让我设置一个-Xmx6144m -Xms6144m 的参数。有点方了。问了他下是不是要设置成全部内存的80%。得到了肯定的回答,然后修改Dockerfile如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ENV TZ=Asia/Shanghai
RUN apk add --no-cache tini
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD target/xxxx-0.0.1-SNAPSHOT.jar xxxx-0.0.1-SNAPSHOT.jar
RUN sh -c 'touch /xxxx-0.0.1-SNAPSHOT.jar'
ENV JAVA_OPTS=""
ENV JVM_OPTS="-XX:MaxRAMPercentage=80.0"
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” 跑起来就可以了。