Docker 自1.10版本开始加入的安全特性。类似于 jmap 这些 JDK 工具依赖于 Linux 的 PTRACE_ATTACH,而是Docker自1.10在默认的seccomp配置文件中禁用了ptrace
解决方案
如果使用docker-compose启动容器,如下加入
cap_add即可[root@localhost etl]# cat docker-compose.yml version: '2' services: powerEtl: image: power-etl:1.0 network_mode: "host" volumes: - /root/etl/:/root/etl/ cap_add: - SYS_PTRACE
打印Java堆概要信息,包括使用的GC算法、堆配置参数和各代中堆内存使用情况
1:jmap -heap pid(下面例子中的pid是1)
[root@localhost /]# docker exec -it 2cf384 /bin/sh / # jps 1 jar 102 Jps / # jmap -heap 1 Attaching to process ID 1, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.202-b08 using thread-local object allocation. Parallel GC with 4 thread(s) Heap Configuration: //堆内存初始化配置 MinHeapFreeRatio = 0 //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40) MaxHeapFreeRatio = 100 //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70) MaxHeapSize = 2051014656 (1956.0MB) //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小 NewSize = 42991616 (41.0MB) //对应jvm启动参数-XX:NewSize=设置JVM堆的‘新生代’的默认大小 MaxNewSize = 683671552 (652.0MB) //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小 OldSize = 87031808 (83.0MB) //对应jvm启动参数-XX:OldSize=<value>:设置JVM堆的‘老生代’的大小 NewRatio = 2 //对应jvm启动参数-XX:NewRatio=:‘新生代’和‘老生代’的大小比率 SurvivorRatio = 8 //对应jvm启动参数-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 0 (0.0MB) Heap Usage: //堆内存使用情况 PS Young Generation Eden Space: capacity = 325058560 (310.0MB) //Eden区总容量 used = 241188112 (230.01490783691406MB) //Eden区已使用 free = 83870448 (79.98509216308594MB) //Eden区剩余容量 74.19835736674648% used //Eden区使用比率 From Space: //其中一个Survivor区的内存分布 capacity = 9437184 (9.0MB) used = 7042944 (6.7166748046875MB) free = 2394240 (2.2833251953125MB) 74.62972005208333% used To Space: //另一个Survivor区的内存分布 capacity = 9961472 (9.5MB) used = 0 (0.0MB) free = 9961472 (9.5MB) 0.0% used PS Old Generation //当前的Old区内存分布 capacity = 62390272 (59.5MB) used = 14477120 (13.80645751953125MB) free = 47913152 (45.69354248046875MB) 23.20413028492647% used 21711 interned Strings occupying 2094576 bytes.