Альтернативы для heapdumps создания с более высокой производительностью, чем jmap?

Попытайтесь заменить

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

*.info;mail.none;authpriv.none;cron.none;local1.!=info                /var/log/messages

Это зарегистрирует сообщение, которые соответствуют: любое средство с информацией об уровне И средство не почта И средство не authpriv И средство local1 execpt, когда уровень является информацией.

5
задан 18 March 2011 в 14:29
1 ответ

я нашел ответ на свой вопрос. этот ответ на другой вопрос на serverfault дал мне идею.

  1. подключение с gdb к Вашему процессу Java
    gdb --pid=<your java pid>
  2. создайте дамп ядра из gdb
    gcore <file name>
    detach
    quit
  3. перезапустите процесс Java или сделайте то, что когда-либо Вы любите
  4. создайте дамп "кучи" из дампа ядра путем соединения jmap к дампу ядра
    jmap -heap:format=b <path to java binary> <core dump file>

На шаге 4 жизненно важно, чтобы Вы указали, что правильный двоичный файл Java, иначе jmap не может присоединить к дампу ядра. если Вы не уверены, какой двоичный файл использовался для процесса Java, откройте дамп ядра с gdb:
gdb --core=<core dump file>
Будет строка как этот, говоря Вам полный путь:
Core was generated by '/opt/tomcat/bin/jsvc'.

создание дампа ядра намного быстрее, чем создание heapdump непосредственно через jmap. таким образом можно создать heapdump процесса Java без слишком долгих времен простоя.

Править:
когда Вы получаете следующее сообщение об ошибке, это могли бы быть Вы, указали неправильный двоичный файл Java:

Error attaching to core file: Can't attach to the core file

для получения правильного двоичного файла Java для вызова jmap откройте дамп ядра с gdb:

gdb --core=[path tp core file]

будет строка как это, говоря Вам корректный двоичный файл:

Core was generated by `/opt/tomcat/bin/jsvc'.
8
ответ дан 3 December 2019 в 01:22

Теги

Похожие вопросы