Google Cloud SQL Postgres - 随机减慢来自Google Compute / Kubernetes的查询速度

时间:2018-03-07 00:25:02

标签: postgresql google-cloud-sql

我一直在使用Postgresql测试Google Cloud SQL,但我有随机查询需要~3s而不是几ms。

我做过的故障排除:

  • 查询本身不是问题,重新运行相同的查询将起作用。
  • 正确设置索引。数据库也非常小,即使没有任何索引也不应该这样做。
  • 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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

谢谢,请告诉我!