Posted on 16 października, 2018
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