当前位置: 首页 > 知识库问答 >
问题:

谷歌云SQLPostgres-来自谷歌计算/库伯内特斯的随机慢速查询

谷梁振
2023-03-14

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

我所做的故障排除:

    < li >查询本身没有问题,重新运行相同的查询也可以。 < li >索引设置正确。数据库也非常非常小,它不应该这样做,即使没有任何索引。 < Li > Kubernetes容器通过SQL代理连接到数据库(我跟踪了这个https://cloud . Google . com/SQL/docs/postgres/connect-Kubernetes-engine)。这不是问题,虽然我试图直接连接到数据库,有同样的问题。 < li >我将< code > net . IP v4 . TCP _ keepalive _ time 配置为60,以确保连接不会中断。 < li >我还有一个永不断开的连接池,以确保它不是来自那个。 < li >当我直接通过本地Postgresql客户端运行查询时,我从未遇到过这个问题。 < li >在本地开发并连接到我的本地数据库时,我也没有这个问题。

我的意思是:我觉得我的Google Compute实例和我的Google SQL实例之间存在一些奇怪的连接/链接问题,我似乎无法解决。有什么想法吗?

编辑:我还注意到这些日志在我的SQL云实例每30:错误:恢复没有在进行中提示:恢复控制功能只能在恢复期间执行语句:SELECTpg_is_xlog_replay_paused(),current_timestamp

共有1个答案

唐威
2023-03-14

你面临的是一个有趣的问题。所以我对Kubernetes的了解并不多,但我确实有一个大致的了解,所以让我们看看我是否能提供一些建议。

首先,您在问题中链接到的API确实提到它仍在测试版中。因此,我相信在最大限度地提高速度性能方面仍有问题需要解决。

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

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

谢谢,一定要让我知道!

 类似资料:
  • 我知道很多人已经有类似的问题,我读了其中一些,但没有发现什么实际上帮助我到目前为止。 我有一个支持私有回购的gitlab,我还使用谷歌库伯内特斯引擎。我的私人回购协议中有几个Docker容器,我想将其中一个部署到Kubernetes引擎。 我用我还尝试了创建秘密docker注册表名--docker server=registry。xy。z--docker用户名=google--docker密码=x

  • 我们目前仍在欧洲西部地区2(伦敦)运行Kubernetes群集,但必须使用新的IP地址从欧洲西部3(法兰克福)进入群集。 在尝试在europe-west2地区的集群上部署新入口后,我发现以下错误: 我假设入口只能访问同一区域的区域IP地址。 我使用以下注释: 有人知道如何在进入europe-west2时使用europe-west3的IP地址吗? 干杯干杯

  • 介绍如何在谷歌云平台获取在云联壹云平台需要使用的配置参数。 如何获取谷歌云服务帐号密钥信息? 纳管指定项目 打开“GCP Console中的IAM和管理-IAM页面”页面并登录。 单击顶部“选择项目”,选择需要授权的项目。 在左侧导航栏中选择“服务账号”,进入指定项目的服务账号页面。 单击 “创建服务账号” 按钮,进入创建服务账号页面。 配置服务账号名称、服务账号ID、服务账号说明等,单击 “创建

  • 根据我在互联网上发现的几个来源,不可能仅通过内部IP将谷歌云功能连接到受限计算引擎实例(例如。https://groups.google.com/forum/#!主题/gce讨论/HEn5P9PJzYQ)。真的还是这样吗?我的设置如下所示: 谷歌云充当API(公共) 我现在通过防火墙规则将计算引擎实例限制为仅内部流量(10.128.0.0/9)。我的应用程序引擎仍然可以连接到计算引擎实例,但我的云

  • 上面写着“Google Cloud Messaging(GCM)是一个免费服务”,但是为了使它能够运行,我需要在Google Cloud平台中创建一个项目,这需要花钱…那怎么免费呢?还是我错过了什么?

  • 我遵循了一些指南,我已经用谷歌容器引擎和谷歌容器注册表设置了CI。问题是我的更新没有应用到部署中。 这就是我的部署。yml包含Kubernetes服务和部署: 作为CI过程的一部分,我运行了一个脚本来更新google cloud registry中的图像,然后运行。这两项任务都成功了,我收到通知,部署和服务已更新: 由于我在图像中添加了标记,我以为每次更新部署时都会下载图像。根据文档a也应该是默认