Google Cloud SQL Postgres - 随机减慢来自Google Compute / Kubernet



我一直在用Postgresql测试Google Cloud SQL,但我的随机查询需要~3秒而不是几毫秒。

我做的故障排除:

查询
  • 本身不是问题,重新运行相同的查询将起作用。
  • 索引
  • 设置正确。数据库也非常非常小,即使没有任何索引,也不应该这样做。
  • Kubernetes 容器通过 SQL 代理连接到数据库(我遵循了这个 https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine)。这不是问题,因为我尝试直接连接到数据库,但也有同样的问题。
  • 我将net.ipv4.tcp_keepalive_time配置为 60,以确保连接不会断开。
  • 我还有一个永远不会断开连接的连接池,以确保它不是从那里断开的。
  • 当我直接通过本地 Postgresql 客户端运行查询时,我从来没有遇到过这个问题。
  • 在本地开发并连接到我的本地数据库时,我也没有这个问题。

我的意思是:我觉得我的Google Compute实例和我的Google SQL实例之间存在一些奇怪的连接/链接问题,我似乎无法弄清楚。 知道吗?

编辑: 我还注意到每 30 秒在我的 SQL Cloud 实例中出现以下日志: 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

这是您面临的一个有趣的问题。所以我对 Kubernetes 的了解不是很好,但我确实有一个大致的了解,所以让我们看看我是否可以提供一些建议。

首先,您在问题中链接到的 API 确实提到它仍处于测试阶段。因此,我确实相信在最大化速度性能方面仍然存在问题需要修补。

其次,据我所知,Kubernetes 是处理无状态工作负载的绝佳工具。因此,在查询需要状态的情况下处理数据将是一个缓慢的操作。这篇文章(虽然不完全相关)确实解释了 Kubernetes 的一些陷阱(并非所有问题都是相关的)

第三,你能解释一下你的用例吗?你真的需要使用 Kubernetes 还是其他工具(如强大的计算引擎实例或数据流作业)可以解决问题?您是通过编程语言还是应用程序调用进行数据库查询?

谢谢,请告诉我!

相关内容

最新更新