我一直在使用PostgreSQL测试Google Cloud SQL,但是有些查询随机需要3秒钟,而不是几毫秒。
我已经尝试了以下排除故障方法: - 查询本身没有问题,重新运行相同的查询即可正常工作。 - 索引已正确设置。数据库非常小,即使没有任何索引,它也不应该出现这种情况。 - Kubernetes容器通过SQL Proxy连接到数据库(我按照https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine的说明操作)。但这不是问题,因为我尝试直接连接到数据库,问题依然存在。 - 我将`net.ipv4.tcp_keepalive_time`配置为60,以确保连接不会断开。 - 我还有一个连接池,这些连接永远不会断开,以确保问题不是由此引起的。 - 当我直接通过本地PostgreSQL客户端运行查询时,我从未遇到过这个问题。 - 在本地开发并连接到我的本地数据库时,我也没有这个问题。
我的意思是:我感觉我的Google Compute实例和Google SQL实例之间存在某种奇怪的连接/链接问题,我似乎无法解决。有什么想法吗?
编辑: 我还注意到我的SQL Cloud实例每30秒记录一次以下日志:
我已经尝试了以下排除故障方法: - 查询本身没有问题,重新运行相同的查询即可正常工作。 - 索引已正确设置。数据库非常小,即使没有任何索引,它也不应该出现这种情况。 - Kubernetes容器通过SQL Proxy连接到数据库(我按照https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine的说明操作)。但这不是问题,因为我尝试直接连接到数据库,问题依然存在。 - 我将`net.ipv4.tcp_keepalive_time`配置为60,以确保连接不会断开。 - 我还有一个连接池,这些连接永远不会断开,以确保问题不是由此引起的。 - 当我直接通过本地PostgreSQL客户端运行查询时,我从未遇到过这个问题。 - 在本地开发并连接到我的本地数据库时,我也没有这个问题。
我的意思是:我感觉我的Google Compute实例和Google SQL实例之间存在某种奇怪的连接/链接问题,我似乎无法解决。有什么想法吗?
编辑: 我还注意到我的SQL Cloud实例每30秒记录一次以下日志:
ERROR: recovery is not in progress
HINT: Recovery control functions can only be executed during recovery.
STATEMENT: SELECT pg_is_xlog_replay_paused(), current_timestamp