首页 > 解决方案 > Akka.net PostgreSQL Peristence 启动时间慢

问题描述

我们有一个 .NET 2.2 应用程序,我们将 Akka 和 Akka.Persistence 与 PostgreSQL 一起用于日志和快照。我们有一个包含大约 200 万个事件和 42,000 个唯一持久性 ID(所有 ID 都是 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. 如果我已经为每个参与者提供了特定的持久性 id,为什么 Akka.Persistence 需要知道所有这些 id?
  2. 我能做些什么来禁用这种行为吗?理想情况下,我希望我们的启动时间接近于零。

谢谢您的帮助!

标签: postgresqlevent-sourcingakka.netakka-persistence

解决方案


推荐阅读