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

Mic*_*lar 12 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

Har*_*eem 0

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

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

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

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

谢谢,请告诉我!