我一直在具有 1 个写入器实例和 1 个读取器实例的 Aurora PostgreSQL 集群上运行查询。 我的应用程序位于 .NET6 中,它使用 Npgsql 库连接到集群。我一直在测试该库的多个版本:6.0.7 和 7.0.0。
场景如下:
Npgsql.NpgsqlException (0x80004005):从流读取时出现异常 ---> System.IO.EndOfStreamException:尝试读取超过流末尾的内容。
当第一个读取器被标记为删除时,新查询(使用新创建的 NpgSqlConection 对象)不应该在第二个读取器上执行吗? 有人可以提供一些关于如何完成此操作的详细信息吗?不使用重试机制可以避免这种情况吗?
我在重新启动主实例时遇到了类似的问题。即使主实例重新启动后,前几个请求也会转到旧实例,这会导致相同的错误。
我将 Keepalive=1 参数添加到 postgres 连接字符串中,发现过时的连接已被删除并替换为干净的连接。问题解决后