Nie korzystaj z Axon i JPA

Problemy z JPA i Axonem nie zaczynają się od razu. Początki są wolne, chcesz aby wykonał się jeden rozkaz, później sto rozkazów, wszystko przechodzi swobodnie i szybko, nie widać żadnego problemu. Gdy zaczyna się robić poważnie i musisz wykonać np. czterdzieści tysięcy rozkazów to wtedy zauważasz dziwne zachowanie swojego komputera. Chrom płacze z głodu, Intellij przestaje funkcjonować i nagle dostajesz „Out of Memory exception”. Siedzisz zdziwiony przed komputerem i się zastanawiasz jak prosta logika jednego ifa jest w stanie zjeść szesnaście giga bajtów pamięci RAM w kilka sekund.

Problem pamięci RAM

Podczas przetwarzania dużej ilości rozkazów dla Event Sourcing-owych agregatów występuje duże zużycie pamięci RAM.

Przyczyna

Po profilowaniu aplikacji, można zauważyć duże zużycie pamięci RAM dla klasy TreeSet, która jest wykorzystywana w klasach JPA.

Rozwiązanie

Rozwiązanie jest dojść proste, wystarczy wykorzystać konfigurację
JdbcAutoConfiguration do zapisywania struktur Axonowych w Postgresie. Po zastosowaniu konfiguracji zużycie pamięci spada poniżej dwustu pięćdziesięciu sześciu mega bajtów pamięci RAM.

Wersja Axona: 3.0

%d bloggers like this: