Я пытаюсь понять, что значит

-XX: OnOutOfMemoryError = 'убить% p'

Имеется ввиду в следующей команде?

Я не уверен, что означает% p?

exec /bin/bash -c "LD_LIBRARY_PATH="/usr/hdp/current/hadoop-client/lib/native:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64:$LD_LIBRARY_PATH" $JAVA_HOME/bin/java -server -Xmx5120m '-DENVIRONMENT=pt' -Djava.io.tmpdir=$PWD/tmp '-Dspark.history.ui.port=18081' '-Dspark.driver.port=39112' -Dspark.yarn.app.container.log.dir=/hadoop/hdfs/drive5/hadoop/yarn/log/application_1539650094881_0116/container_e111_1539650094881_0116_01_000024 -XX:OnOutOfMemoryError='kill %p' org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url spark://CoarseGrainedScheduler@192.168.1.13:39112 --executor-id 13 --hostname slave3.hadoop.tsl.com --cores 5 --app-id application_1539650094881_0116 --user-class-path file:$PWD/__app__.jar 1> /hadoop/hdfs/drive5/hadoop/yarn/log/application_1539650094881_0116/container_e111_1539650094881_0116_01_000024/stdout 2> /hadoop/hdfs/drive5/hadoop/yarn/log/application_1539650094881_0116/container_e111_1539650094881_0116_01_000024/stderr"
2
Abdul Rahman 23 Окт 2018 в 17:02

2 ответа

Лучший ответ

%p - это заполнитель для PID.
JVM автоматически заменит это идентификатором процесса Java, запущенного в данный момент.

Эта опция сообщает JVM о самоуничтожении при возникновении OutOfMemoryError.

3
apangin 23 Окт 2018 в 14:06

Этот аргумент выполняет команду ОС при возникновении ошибки OutOfMemory. Его можно использовать для отправки предупреждений, сбора диагностических данных или для перезапуска приложения.

JVM заменит %p своим идентификатором процесса (PID). В конкретном случае это позволяет завершить приложение в OOM. Обычно это хорошая идея, потому что ошибка OutOfMemory может случайным образом прервать поток, и нет хорошего и надежного способа продолжить.

Начиная с версии 8u92, этот хак больше не нужен, так как здесь есть опция ExitOnOutOfMemory: Java - завершение работы при ошибке нехватки памяти

1
eckes 23 Окт 2018 в 19:45
52951030