如何解决为什么Google Cloud Build中的数据库连接速度很慢?
我正在运行一个YII项目,该项目使用Codeception进行单元和集成测试。在我的Dockerfile中,构建的最后一步是使用RUN ./vendor/bin/codecept run
我已经设置了CloudSQL并将IP地址列入白名单,以便CloudBuild可以建立与数据库的连接。
在cloudbuild.yaml中,我第一步是构建docker映像:
- name: gcr.io/cloud-builders/docker
args:
- build
- '--no-cache'
- '-t'
- '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
- .
- '-f'
- Dockerfile
- '--build-arg'
- environmentId=$_GCPENVIRONMENTID
id: Build
当Docker在CloudBuild上运行集成测试RUN ./vendor/bin/codecept run
时,涉及数据库连接时,它的运行速度非常慢。当我在本地计算机上对它进行基准测试时,在连接到相同的CloudSQL DB时,它的运行速度至少快了10倍。
我已竭尽所能找出问题所在。 CloudSQL运行速度很快。 Docker构建速度很快。但是由于某种原因,从CloudBuild到CloudSQL的数据库连接确实很慢。为什么呢?
测试结果
我使用2个不同的数据库进行了2次测试运行。在每次测试运行中,我都使用Cloud Build和自己的本地主机运行。作为控件,我有一个测试脚本,其中包括没有数据库交互的测试。
结果与网络连接所预期的几乎相同。这两个数据库都托管在新加坡地区。
测试1-Google Cloud SQL
- Cloud Build-10秒至1.5分钟
- 本地主机-1秒到4秒
- 云构建控件-
- 本地主机控件-
测试2-数字海洋数据库
- Cloud Build-10秒至1.5分钟
- 本地主机-1秒到4秒
- 云构建控件-
- 本地主机控件-
解决方法
我与 Google 支持人员取得了联系。似乎所有 Cloud Build 触发器都在 us-central1 上运行。连接到 us-central1 之外的区域会降低网络性能。至于我的情况,由于我的数据库位于新加坡地区,我遇到了严重的性能损失。
目前有一种方法可以将所有 Cloud Build 移植到其他选定区域。遗憾的是,此功能仍处于测试阶段,新加坡不在可以运行 Cloud Build 的选定区域之列。
如果您有幸身处支持 Cloud Build 测试版的地区,您可以在 https://docs.google.com/forms/d/e/1FAIpQLSdAkLtvPUQFCgAUcHUi1VDHn_GaQz_sDOvFxpg3JXIJdIZY6g/viewform
注册加入候补名单这个答案并不完全是一个解决方案,但我希望它可以提供一些有关问题原因的见解。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。