Запуск JCMD JFR.DUMP, кажется, задерживает JVM. Как я могу это исправить?JAVA

Программисты JAVA общаются здесь
Anonymous
 Запуск JCMD JFR.DUMP, кажется, задерживает JVM. Как я могу это исправить?

Сообщение Anonymous »

Запись полета включена с помощью disk = false, когда запускается служба, а служба таймера запускает JCMD
jfr.dump каждые пять минут, чтобы снимать записи полетов в файл.
Однако мы замечаем проблемы с производительностью, которые совпадают с выполнением этой команды.
Это проявляется в моей службе на основе Vert.x как: < /p>

Код: Выделить всё

2025-02-05 17:00:39.998 [33] WARN  io.vertx.core.impl.BlockedThreadChecker - Thread Thread[#34,vert.x-eventloop-thread-0,5,main] has been blocked for 3154 ms, time limit is 2000 ms
Это не запускает этот журнал каждый раз, но каждый раз, когда я вижу этот журнал, он соответствует, когда jfr.dump ran.
< P> Периодический процесс мало что делает. Сервис работает на экземпляре AWS EC2. Существует пара вызовов скручивания, чтобы получить подробную информацию о экземпляре, то это делает файл JFR и копирует его на S3.
Основное JCMD < /code> просто: < /p>
jcmd $PID JFR.dump name=jfr filename=$JFR_FILE_LOCATION > /dev/null && log_message "JFR dump succeeded" || log_message "JFR dump failed"
< /code>
попытался пропустить копию на S3, думая, что это может замедлить вызовы AWS API или что -то, что можно остановить основной теме, это не помогло. Пытался использовать ZGC на всякий случай, но это не помогло. (Статистика кучи не включена.)
Я не думал, что записи полетов должны остановить JVM таким значительным способом. исправить это?


Подробнее здесь: https://stackoverflow.com/questions/794 ... i-fix-this

Вернуться в «JAVA»