今天的 App Engine 部署异常缓慢?

Appengine deployments are extraodinarily slow today?

我们有一个小的 java 项目需要部署 它包括 9000 多个文件

命令:mvn gcloud:deploy

但我得到了日志:

    ...
[INFO] INFO: Uploading [/home/steven/work/idigisign/target/appengine-staging/__static__/node_modules/rx/src/core/linq/observable/when.js] to [7dfb30ad32893c5042dba03601f006a40419fab0]
    [INFO] DEBUG: Uploading [/home/steven/work/idigisign/target/appengine-staging/assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js] to [7e0725897d7b99c3c33b56915d202e2dde552ea9]
    [INFO] INFO: Uploading [/home/steven/work/idigisign/target/appengine-staging/assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js] to [7e0725897d7b99c3c33b56915d202e2dde552ea9]
    [INFO] DEBUG: Uploading [/home/steven/work/idigisign/target/appengine-staging/node_modules/is-redirect/index.js] to [7e0afe4775bf7f8558665760171c01948c22f771]
    [INFO] INFO: Uploading [/home/steven/work/idigisign/target/appengine-staging/node_modules/is-redirect/index.js] to [7e0afe4775bf7f8558665760171c01948c22f771]
    [INFO] DEBUG: Uploading [/home/steven/work/idigisign/target/appengine-staging/node_modules/rxjs/src/util/Map.ts] to [7e11722f4cd9ce91ec99b97710fbc4e7f40be09d]
...

每分钟约50个 所以它会花费180分钟...

速度特别慢

有人可以帮助我吗?

设置环境变量CLOUDSDK_APP_USE_GSUTIL=1再试;这使用不太可靠但速度更快的文件上传代码路径(有计划加快默认代码路径)。

我们有同样的问题,速度很慢。 猜猜我们已经解决了。

首先,我们跟踪了gcloud的日志,发现很多文件都被重新上传了,这些文件都没有被修改过。所以我们尝试跟踪gcloud的源代码,我们发现问题是由"Google Cloud Storage JSON API".

引起的

当它查询存储桶列表时,它返回了 1000 个项目,但我们有 1325 个项目,所以我想我们找到了问题。

然后,我们查找api引用,找到一个参数-maxResults,于是尝试修改源码(cloud_storage.py),发现没有效果它的价值超过1000.

最后,我们找到另一个参数——nextPageToken,我们查询列表直到 "nextPageToken" 是 None,现在它得到了 "Google Cloud Storage" 中的所有项目并且不上传存在的文件再次.

def ListBucket(bucket_ref, client):
  request = STORAGE_MESSAGES.StorageObjectsListRequest(bucket=bucket_ref.bucket)

  items = set()
  try:
    response = client.objects.List(request)
    for item in response.items:
      items.add(item.name)
    while response.nextPageToken:
      request = STORAGE_MESSAGES.StorageObjectsListRequest(bucket=bucket_ref.bucket,pageToken=response.nextPageToken)
      response = client.objects.List(request)
      for item in response.items:
        items.add(item.name)
  except api_exceptions.HttpError as e:
    raise UploadError('Error uploading files: {e}'.format(e=e))

  return items