У нас есть приложение. NET 2.2, и мы используем Akka и Akka.Pesistence с PostgreSQL для журнала и снимков. У нас есть большой журнал с примерно 2 миллионами событий и 42 000 уникальных идентификаторов персистентности (все идентификаторы - GUID). У нас всегда были проблемы со временем запуска нашего приложения. Иногда настойчивым актерам требуется до 20 минут, чтобы стать отзывчивыми. Странно то, что это по-прежнему занимает много времени даже для постоянных актеров со снимками или без событий журнала.
После некоторого поиска в журналах PostgreSQL я обнаружил, что при запуске каждый раз выполняется следующий запрос:
2020-01-10 07:37:13 UTC-5e1825a8.b4c04-LOG: duration: 966726.226 ms execute <unnamed>:
SELECT DISTINCT e.persistence_id as PersistenceId
FROM public.event_journal e
Вы видите, что в нашей среде производства / тестирования это занимает ДЕЙСТВИТЕЛЬНО много времени, и я предполагаю, что это является причиной медленного запуска.
Я бы хотел знать:
- Зачем Akka.Persistence нужно знать все эти идентификаторы, если я уже предоставляю его с указанием c идентификатора персистентности для каждого актера?
- Есть ли что-нибудь Я могу сделать, чтобы отключить это поведение? В идеале мне бы хотелось, чтобы время запуска было близко к нулю.
Спасибо за вашу помощь!