PSQLException: 此连接已关闭

PSQLException: This connection has been closed

在新的专用服务器上正常运行几个小时后,我的 Minecraft 服务器将失去与数据库的连接并抛出以下错误:“org.postgresql.util.PSQLException:此连接已关闭。”

重启MC服务器后就好了,但几个小时后问题又出现了。我的猜测是它会随着时间的推移以某种方式失去联系。目前专用主机和数据库所在主机之间的 ping 范围在 0.3 - 0.5 毫秒之间。

我在从配置设置值后使用 PGSimpleDataSource 创建连接实例。

PGSimpleDataSource ds = new PGSimpleDataSource();
// Set the values here...
Connection c = ds.getConnection(...);

有谁知道为什么会这样 and/or 如果有解决办法?谢谢!

如果不是客户端软件中的错误,则可能是防火墙或路由器配置错误。

postgresql.conf 中的 tcp_keepalives_idle 设置为小于默认值 2 小时的值,例如 5 分钟为 300。重新加载 PostgreSQL 后,它会每 5 分钟自动发送一次 keepalive 数据包,以防止连接空闲。

如果那不能解决问题,那么它一定是客户端应用程序中的错误。