#openshift #heap-dump
#openshift #дамп кучи
Вопрос:
В запущенном приложении OpenShift 3.11 я пытаюсь получить дамп кучи, потому что подозреваю, что в моих модулях есть ООМ.
Мое приложение работает на 14 репликах, и я хочу добавить следующую конфигурацию к параметрам Java
-XX: HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=file:///my/path/jdump/
путь находится на внешнем подключенном томе.
Теперь я знаю, что имя файла по умолчанию будет
java_pid1.hprof
но из
ps -ef | grep java
я заметил, что большинство модулей используют один и тот же pid для процесса, и я боюсь, что если ООМ происходит более чем в одном модуле одновременно, у меня возникнет проблема с современным доступом и записью в файл.
Есть ли способ параметризовать имя файла? Я представляю себе что-то вроде
-XX: HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=file:///my/path/jdump/{$podname}_dump.href
большое спасибо за ваши добрые ответы
Ответ №1:
Вы можете указать имя модуля как переменную env, а затем использовать его в своей команде, т.е.
command: [ "/bin/java"]
args:
- "-jar"
- "your.jar"
- "-XX: HeapDumpOnOutOfMemoryError"
- "-XX:HeapDumpPath=file:///my/path/jdump/$(MY_POD_NAME)_dump.href"
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
Обратите внимание на синтаксическую ссылку $(MY_POD_NAME) https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#use-environment-variables-to-define-arguments
Отображение полей как переменных env: https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-pod-fields-as-values-for-environment-variables
Комментарии:
1. большое спасибо, я постараюсь и дам вам знать