Docker : 如何在 运行 docker 日志时打印 jvm 内存信息
Docker : how to print jvm memory informations when running docker logs
我有一个 java spring-boot app based, 运行 on Docker.
在我的 dockerfile 中,我正在使用 Entrypoint .
显然,我是这样使用它的:
ENTRYPOINT ["java","-Dfile.encoding=utf-8", "-XX:+ExitOnOutOfMemoryError","-Xms256m","-Xmx256m", "-XshowSettings:vm","-jar","/opt/myapp.jar", "--spring.profiles.active=server"]
像这样,当容器启动时:它在 运行 docker logs
:
时显示这样的值
VM settings:
Min. Heap Size: 256.00M
Max. Heap Size: 256.00M
Ergonomics Machine Class: client
Using VM: OpenJDK 64-Bit Server VM
. ____ _ __ _ _
/\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.0.RELEASE)
但对入口点格式稍加改造(注入一些 en vars):
ENTRYPOINT java -jar /opt/myapp.jar -Dfile.encoding=utf-8 -XX:+ExitOnOutOfMemoryError -Xms=${XMS_VALUE} -Xmx=${XMX_VALUE} -XshowSettings:vm -XX:+PrintFlagsFinal --spring.profiles.active=server
隐藏 jvm 值,仅显示 spring 图表:
. ____ _ __ _ _
/\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.2.RELEASE)
怎样才能让它再次出现??
JVM
选项和参数的顺序很重要。用法是:
java [options] -jar <jarfile> [args...]
(to execute a jar file)
因此 JVM
选项必须放在 -jar
选项之前,否则它们将被视为应用程序参数
ENTRYPOINT java -Dfile.encoding=utf-8 -XX:+ExitOnOutOfMemoryError \
-Xms${XMS_VALUE} -Xmx${XMX_VALUE} \
-XshowSettings:vm -XX:+PrintFlagsFinal -XshowSettings:vm \
-jar /opt/myapp.jar --spring.profiles.active=server
运行 它与:
docker run -e XMX_VALUE=256M -e XMS_VALUE=256m <image_name>
我有一个 java spring-boot app based, 运行 on Docker.
在我的 dockerfile 中,我正在使用 Entrypoint .
显然,我是这样使用它的:
ENTRYPOINT ["java","-Dfile.encoding=utf-8", "-XX:+ExitOnOutOfMemoryError","-Xms256m","-Xmx256m", "-XshowSettings:vm","-jar","/opt/myapp.jar", "--spring.profiles.active=server"]
像这样,当容器启动时:它在 运行 docker logs
:
VM settings:
Min. Heap Size: 256.00M
Max. Heap Size: 256.00M
Ergonomics Machine Class: client
Using VM: OpenJDK 64-Bit Server VM
. ____ _ __ _ _
/\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.0.RELEASE)
但对入口点格式稍加改造(注入一些 en vars):
ENTRYPOINT java -jar /opt/myapp.jar -Dfile.encoding=utf-8 -XX:+ExitOnOutOfMemoryError -Xms=${XMS_VALUE} -Xmx=${XMX_VALUE} -XshowSettings:vm -XX:+PrintFlagsFinal --spring.profiles.active=server
隐藏 jvm 值,仅显示 spring 图表:
. ____ _ __ _ _
/\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.2.RELEASE)
怎样才能让它再次出现??
JVM
选项和参数的顺序很重要。用法是:
java [options] -jar <jarfile> [args...]
(to execute a jar file)
因此 JVM
选项必须放在 -jar
选项之前,否则它们将被视为应用程序参数
ENTRYPOINT java -Dfile.encoding=utf-8 -XX:+ExitOnOutOfMemoryError \
-Xms${XMS_VALUE} -Xmx${XMX_VALUE} \
-XshowSettings:vm -XX:+PrintFlagsFinal -XshowSettings:vm \
-jar /opt/myapp.jar --spring.profiles.active=server
运行 它与:
docker run -e XMX_VALUE=256M -e XMS_VALUE=256m <image_name>