ошибка прикрепления к процессу при запуске jmap -heap pid - PullRequest
0 голосов
/ 14 декабря 2018

Я развернул микросервис с док-контейнером и хочу проверить информацию jvm.Я вхожу в контейнер и нахожу пид.Затем я запускаю команду jmap -heap pid, но получаю следующий журнал ошибок:

error log capture

Как это исправить?

1 Ответ

0 голосов
/ 16 декабря 2018

В Linux jmap -heap работает поверх Serviceability Agent, который, в свою очередь, использует системный вызов ptrace.

По умолчанию ptrace требуются права суперпользователя (или, точнее, CAP_SYS_PTRACE возможность).Кроме того, профиль безопасности Docker по умолчанию запрещает ptrace syscall с помощью seccomp или apparmor.

Таким образом, чтобы разрешить ptrace и jmap -heap в контейнере, может потребоваться добавить следующие параметры докера:

--cap-add=SYS_PTRACE --security-opt=seccomp:unconfined --security-opt=apparmor:unconfined

Примечание: это не лучшее решение с точки зрения безопасности.Обратитесь к руководству докера, чтобы узнать, как включить определенный системный вызов без отключения seccomp и apparmor .

Еще лучшим вариантом было бы вообще избежать jmap -heap.Существуют и другие эффективные способы мониторинга JVM без поддержки агента по удобству обслуживания, например, jcmd, jstat и JMX.

...