上传到GCP Apt工件注册表的时间非常慢



我有一个CI/CD系统,为Apt软件包上传大量的文件到Google Cloud Artifact Registry。普通包的上传时间大约为10秒。昨天,这个工件注册表的所有上传命令开始挂起,直到它们被外部触发器或超时(超过30分钟)终止。任何试图从注册表超时删除包而不删除包的行为。我用来上传的命令是:

gcloud artifacts apt upload ${ARTIFACT_REPOSITORY} --location=${ARTIFACT_LOCATION} --project ${ARTIFACT_PROJECT} --source=${debPackageName} --verbosity=debug

我首先将所有Gcloud版本更新到最新版本

Google Cloud SDK 409.0.0
alpha 2022.11.04
beta 2022.11.04
bq 2.0.81
bundled-python3-unix 3.9.12
core 2022.11.04
gcloud-crc32c 1.0.0
gsutil 5.16

我试图删除包,认为可能是工件注册表变得臃肿使用以下命令:

gcloud artifacts packages delete --location={LOCATION} --project {PROJECT} --repository={REPOSITORY} {PACKAGE} --verbosity=debug

但是我总是得到:

"message": "Deadline expired before operation could complete."

原始命令和delete命令的调试输出都发送这样的消息:

DEBUG: https://artifactregistry.googleapis.com:443 "GET /v1/projects/{PROJECT}/locations/{LOCATION}/operations/f9885192-e1aa-4273-9b61-7b0cacdd5023?alt=json HTTP/1.1" 200 None
  • 当我创建一个新的存储库时,我能够上传到它而没有超时问题。

我是Artifact Registry的负责人。首先,很抱歉您看到了Apt存储库更新操作的这种延迟。它们可能是由为回购重新生成索引引起的。回购规模越大,需要的时间就越长。

如果你做了一堆单独的上传/删除,这会导致索引生成排队,你会得到超时。我们最近确实改变了一些锁定行为,所以我们可能无意中把一个性能问题换成了另一个。

我们计划停止在文件修改的同一事务中生成索引。相反,我们将异步生成它,并将考虑批处理或删除,以便为大量的单个更新做更少的工作。这将意味着索引在上传调用完成的那一刻不是最新的,但最终将是一致的。

我们现在正在优先处理这个问题,但你可能在几周内看不到性能的变化。唯一真正的解决方法是减少更新频率或保持存储库更小。

再次道歉,我们绝对想让这个工作在一个高性能的方式。

最新更新