繁体   English   中英

每次我尝试部署时都会得到 - (gcloud.preview.app.deploy) 错误响应:[4] DEADLINE_EXCEEDED

[英]Every time I try to deploy I get - (gcloud.preview.app.deploy) Error Response: [4] DEADLINE_EXCEEDED

我是谷歌云的新手,我正在尝试对它进行第一次部署。 我的第一个部署是一个 Ruby on Rails 项目。

我基本上遵循谷歌云文档中的本指南 唯一的区别是我使用的是我自己的项目而不是他们提供的“hello world”项目。

这是我的 app.yaml 文件

runtime: custom
vm: true
entrypoint: bundle exec rackup -p 8080 -E production config.ru
resources:
  cpu: 0.5
  memory_gb: 1.3
  disk_size_gb: 10

当我转到我的项目目录并运行gcloud preview app deploy它会启动部署,但似乎最终会超时。 它给出了错误(gcloud.preview.app.deploy) Error Response: [4] DEADLINE_EXCEEDED

做了一些研究,我发现使用--verbosity debug运行gcloud preview app deploy会提供额外的调试信息,但它不能帮助我找到导致超时的原因。

这是控制台日志的最后一块。

Bundle complete! 35 Gemfile dependencies, 102 gems now installed.
Bundled gems are installed into ./vendor/bundle.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Post-install message from compass:
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
DEBUG: Operation [operations/build/guidir-1286/MmFkZjNmOGYtZDhhZi00NTJmLTk0YWEtMmQzMjBmM2JkOTg2OlVT] complete. Result: {
    "metadata": {
        "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", 
        "build": {
            "finishTime": "2016-04-20T01:55:44.961635Z", 
            "status": "TIMEOUT", 
            "timeout": "600.000s", 
            "projectId": "guidir-1286", 
            "id": "2adf3f8f-d8af-452f-94aa-2d320f3bd986", 
            "source": {
                "storageSource": {
                    "object": "us.gcr.io/guidir-1286/appengine/default.20160420t110030:latest", 
                    "bucket": "staging.guidir-1286.appspot.com"
                }
            }, 
            "steps": [
                {
                    "args": [
                        "us.gcr.io/guidir-1286/appengine/default.20160420t110030:latest"
                    ], 
                    "name": "gcr.io/cloud-builders/dockerizer"
                }
            ], 
            "startTime": "2016-04-20T01:45:43.216420Z", 
            "logsBucket": "staging.guidir-1286.appspot.com", 
            "images": [
                "us.gcr.io/guidir-1286/appengine/default.20160420t110030:latest"
            ], 
            "createTime": "2016-04-20T01:45:41.861657Z"
        }
    }, 
    "done": true, 
    "name": "operations/build/guidir-1286/MmFkZjNmOGYtZDhhZi00NTJmLTk0YWEtMmQzMjBmM2JkOTg2OlVT", 
    "error": {
        "message": "DEADLINE_EXCEEDED", 
        "code": 4
    }
}
DEBUG: (gcloud.preview.app.deploy) Error Response: [4] DEADLINE_EXCEEDED
Traceback (most recent call last):
  File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 654, in Execute
    result = args.cmd_func(cli=self, args=args)
  File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 1401, in Run
    resources = command_instance.Run(args)
  File "/Users/Robert/google-cloud-sdk/lib/surface/preview/app/deploy.py", line 507, in Run
    config_cleanup)
  File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/deploy_command_util.py", line 195, in BuildAndPushDockerImages
    storage_client)
  File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/deploy_command_util.py", line 245, in _BuildImagesWithCloudBuild
    image.tag, cloudbuild_client)
  File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/cloud_build.py", line 181, in ExecuteCloudBuild
    retry_callback=log_tailer.Poll)
  File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/api/operations.py", line 69, in WaitForOperation
    encoding.MessageToPyValue(completed_operation.error)))
OperationError: Error Response: [4] DEADLINE_EXCEEDED
ERROR: (gcloud.preview.app.deploy) Error Response: [4] DEADLINE_EXCEEDED

这是最远的一次,但有时它会在超时之前安装 gems 的中途,而有时它甚至没有开始安装 gems。

我怎样才能阻止这种情况发生?

Docker 构建有 10 分钟的默认超时( runtime: custom App Engine 构建工作的机制)。 您可以通过运行gcloud config set app/cloud_build_timeout [NUMBER OF SECONDS]来增加它。

您也可以通过自己执行构建来解决:

docker build . -t gcr.io/myapp/myimage
gcloud docker push gcr.io/myapp/myimage
gcloud preview app deploy app.yaml --image-url=gcr.io/myapp/myimage

但是,一般来说,您的 Docker 构建不应花费这么长时间。 通常最好有一个已经内置了所有依赖项的基本映像,并且只需从该映像派生最终构建并安装您的应用程序。 这样,您的构建会更快。

当整个请求超时时会引发此错误。

任务队列请求的执行限制为 10 分钟。 您可以通过键入gcloud config set app/cloud_build_timeout [TIMEOUT_SECONDS]来增加 google cloud shell 的超时限制

示例

gcloud config set app/cloud_build_timeout 1000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM