Docker 使用 alpine openjdk 无法查看JVM 无jmap、jstat
在工作中遇到docker中的项目PID为1,镜像中JDK为:openjdk:8-jre-alpine,故不包含jmap等指令。若想在docker中查看相关信息可安装jattach即可解决1.安装jattachapk add --no-cache jattach --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/指令集:
在工作中遇到docker中的项目PID为1,镜像中JDK为:openjdk:8-jre-alpine,原因是因为jre的包取消了jdk的一些工具内。可在docker中查看相关信息可安装jattach即可解决
1.安装jattach
apk add --no-cache jattach --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/
apk add --no-cache jattach --repository http://mirrors.aliyun.com/alpine/latest-stable/community/
指令集:
-
load : load agent library(导入agent库)
-
properties : print system properties(打印系统属性)
-
agentProperties : print agent properties(打印agent属性)
-
datadump : show heap and thread summary(显示堆和线程概要信息)
-
threaddump : dump all stack traces (like jstack)(导出栈信息)
-
dumpheap : dump heap (like jmap)(导出堆信息)
-
inspectheap : heap histogram (like jmap -histo)(显示堆信息直方图)
-
setflag : modify manageable VM flag(修改可管理的VM参数)
-
printflag : print VM flag(打印VM参数)
-
jcmd : execute jcmd command(执行jcmd命令)
1.1 如使用:jcmd命令:
jattach <pid> jcmd "help -all"
1.2 使用dumpheap命令导出堆载信息
jattach <pid> dumpheap <heap dump file path>
jattach 1 jcmd 'GC.heap_dump -all ./123.hprof'
2.切换为jdk包
切换包后可能出现这一错误:
# jmap -histo 1
1: Unable to get pid of LinuxThreads manager thread
若是docker-compose.yml,可在编排文件中添加参数:
pid: "host"
将PID模式设置为主机PID模式,跟主机系统共享进程命名空间。容器使用这个标签将能够访问和操纵其他容器和宿主机的名称空间。
更多推荐
所有评论(0)