G C не удалось удалить KafkaStreams в объекте состояния ERROR из кучи из-за зарегистрированных метрик - PullRequest
0 голосов
/ 03 апреля 2020

Существует приложение KafkaStreams (kafka-streams версия 2.4.0), которое подписывается и отписывается от topi c во время выполнения. Во время отмены подписки KafkaStrams закрывается с:

KafkaStreams.close();
KafkaStreams.cleanUp();

Но даже закрытое такое KafkaStream не имеет права на G C, и после некоторого периода времени и количества отписок приложение вылетает с OOM.

Анализ Heapdump показал, что эти потоки находятся в состоянии завершения - ERROR, PENDING_SHUTDOWN, NOT_RUNNING имеют G C root в JmxMBeanServer с JmxReported.KafkaMbean, сохраненным там.

Ожидается ли, что некоторые метрики останутся после завершения потока внутри JmxMBeanServer, и если да, то как их очистить, чтобы KafkaStreams объекты G C соответствовали требованиям?

1 Ответ

1 голос
/ 06 апреля 2020

Действительно, потребительские метрики не отменены, и в проекте Kafka уже есть исправленная проблема - https://issues.apache.org/jira/browse/KAFKA-9306.

Обновление kafka-clients до версии 2.4.1 исправило выпуск.

...