Приложение Kafka Stream при весенней загрузке продолжает расти бесконечно - PullRequest
0 голосов
/ 24 июня 2019

Изначально я сделал более сложное приложение kstream, которое делало много сложных вещей.Работая в течение более длительного периода времени с пиками 1500 одновременных пользователей, я увидел, что память контейнера для модуля просто продолжала расти, даже ночью, когда нагрузка была очень низкой, 10-20 одновременных пользователей.

Так что яначал копаться в коде на предмет утечек памяти, сделал все твики, которые мог улучшить код.Ничто действительно не помогло, кроме улучшения производительности.Поэтому я создал простое приложение для весенней загрузки, которое в основном слушает тему, а затем просто отфильтровывает некоторые события и отправляет их в другую тему.

public static KStreamBuilder evenNumbersTopology(KStreamBuilder builder) {    

        KStream<String, Integer> kStreamTest = builder.stream(stringSerde, integerSerde, INPUT_TOPIC);

        kStreamTest
            .filter((k, v) -> filterOutUnevenNumbers(v))
            .to(DESTINATION_TOPIC);

        return builder;
    }

В основном он работал в течение 2 недель натест производительности, который варьировал одновременных пользователей от 0 до 2000.Память продолжала расти, но время от времени стабилизировалась.Может кто-нибудь объяснить мне, что происходит?Я ничего не храню. Я просто передаю все события в новую тему.

Редактировать: Я использую следующие версии:Java 8версия kafka: 2.2.0Spring Boot: 2.1.0.RELEASEВот некоторые графики из JVM:Обратите внимание, что пространство Tenured / Eden / Survivor составляет всего около 15 часов, так как я перезапустил все.Срок пребывания в должности - этот показатель упадет, когда он достигнет 64 МБ Tenured

Выживший Survivor

Эдем Eden

Также контейнер памяти: enter image description here

...