1. 程式人生 > 其它 >命令jhsdb jmap --heap --pid 1 報錯

命令jhsdb jmap --heap --pid 1 報錯

一、檢視已經執行的java docker服務的堆使用情況。命令jhsdb jmap --heap --pid 1 報錯

主要錯誤資訊:

  ERROR: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted
  Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted

原因:

  Docker 自 1.10 版本開始加入的安全特性。 jmap 這類 JDK 工具依賴於 Linux 的 PTRACE_ATTACH,而 Docker 自 1.10 版本開始,預設的 seccomp 配置檔案中禁用了 ptrace。容器需要加入對應的設定,使容器支援相關命令的使用。

解決:

  1.停止docker服務 systemctl stop docker

  2.cd /var/lib/docker/containers/容器id 切換到容器路徑

  3.vihostconfig.json 編輯配置檔案,修改CapAdd 的值為SYS_PTRACE

  4.重啟docker服務 systemctl start docker

修改後的結果: