Akka. net PostgreSQL Постоянство Медленное время запуска - PullRequest
2 голосов
/ 10 января 2020

У нас есть приложение. 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

Вы видите, что в нашей среде производства / тестирования это занимает ДЕЙСТВИТЕЛЬНО много времени, и я предполагаю, что это является причиной медленного запуска.

Я бы хотел знать:

  1. Зачем Akka.Persistence нужно знать все эти идентификаторы, если я уже предоставляю его с указанием c идентификатора персистентности для каждого актера?
  2. Есть ли что-нибудь Я могу сделать, чтобы отключить это поведение? В идеале мне бы хотелось, чтобы время запуска было близко к нулю.

Спасибо за вашу помощь!

...