【问题标题】:Google Cloud SQL Postgres - randomly slow queries from Google Compute / KubernetesGoogle Cloud SQL Postgres - 来自 Google Compute / Kubernetes 的随机慢查询
【发布时间】:2018-08-14 23:33:33
【问题描述】:

我一直在使用 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 实例之间存在一些奇怪的连接/链接问题,我似乎无法弄清楚。 有什么想法吗?

编辑: 我还每隔 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

【问题讨论】:

  • 您是否多次运行相同的查询?您的查询是否包含“GROUP_BY”?这类语句需要记忆。您可能想要使用一些分析工具,例如EXPLAINslow query log。如果您有使用临时文件的查询,您可能希望增加实例中 temp_file_limit flag 的值。
  • 验证您的 GKE 磁盘在查询缓慢时是否遇到一些磁盘瓶颈?
  • 这方面有什么更新吗?我有同样的问题。
  • 这里有同样的问题。有更新吗?
  • 这里有同样的问题。使用 mysql、kubernetes 和 node.js 应用程序。通常的查询时间约为 10-25 毫秒,我们每隔一段时间就会随机获得 500-1500 毫秒。

标签: postgresql google-cloud-sql


【解决方案1】:

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

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

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

第三,你能解释一下你的用例吗?您真的需要使用 Kubernetes 吗,或者其他工具(例如强大的 Compute Engine Instance 或 Dataflow 作业)会解决这个问题吗?您是通过编程语言还是应用程序调用进行数据库查询?

谢谢,请告诉我!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多