【问题标题】:Cloud foundry: ERR Timed out after 1m0s: health check never passedCloud Foundry: ERR Timed out after 1m0s: 健康检查从未通过
【发布时间】:2016-02-07 11:52:55
【问题描述】:

在我将应用程序部署到 Cloud Foundry 后,收到以下错误消息: ERR Timed out after 1m0s: health check never passed. 当然,在我的本地机器上可以完美运行。

【问题讨论】:

  • 和异常:java.lang.IllegalStateException:LifecycleProcessor 未初始化 - 在通过上下文调用生命周期方法之前调用“刷新”:

标签: cloud-foundry pivotal-web-services


【解决方案1】:

您应该更改您的健康检查类型。 如果应用程序没有公开 Web 界面,您需要将 healthcheck 类型更改为 process。 有效值为portprocesshttp

要在创建或更新应用程序时配置运行状况检查,请使用 cf push 命令:

$ cf push YOUR-APP -u process

有关详细信息,请参阅运行状况检查文档: https://docs.cloudfoundry.org/devguide/deploy-apps/healthchecks.html

【讨论】:

  • 或者,将 health-check-type: process 添加到您的 manifest.yml。此外,这似乎是正确的答案。
  • 仅供参考:我也能够使用此答案中提供的解决方案解决此错误:ERR Failed to make TCP connection to port 8080: connection refused when scaling instances
【解决方案2】:

根据 cmets 中的讨论和我自己对您正在部署的实际应用程序的测试,看来这个特定的应用程序需要一段时间才能启动。可能与个别 Java 服务超时有关(因为您没有将任何 CF 服务绑定到应用程序)。

无论如何,虽然我不确定实际问题是什么(可能是 PWS 本身的问题),但可以通过在推送时指定 -t 选项或添加 @987654324 来解决这个问题清单的 @ 属性(请参阅 manifest 文档。


老答案

需要更多细节才能确定,但​​我想正在发生两件事之一:

  • 您没有使用正确的端口。 Cloud Foundry 使用 PORT(或者,pre-Diego,VCAP_APP_PORT)环境变量公开它期望应用程序部署的端口。默认为8080,因此如果您的应用程序没有监听8080(或绑定到127.0.0.1 而不是0.0.0.0),那么健康检查将失败。
  • 您的应用程序不公开任何 API 端点,并且应该使用 CF 上的 --no-route 选项进行部署,并且(从 Diego 开始)需要针对它执行 cf set-health-check [app-name]。仅当您的应用程序确实不需要运行状况检查时才应执行此操作。

一些构建包可以自动为您处理第一个。您使用的是哪个构建包?或者,您使用的是哪种语言?

【讨论】:

  • ... 没有任何服务,如大象sql、mondogdb、redis,我正在使用 java build pack。在我为我的应用程序提供更多内存而不是 512 M、1024M 并工作一次但一段时间后终止。
  • hm.. 没有任何路线我怎么能到达应用程序的网页?
  • 您不能,这就是您通常不想设置--no-route 选项的原因。是否可以包含 PWS 的日志输出?
  • 这很可能是 PWS 问题。我将超时时间提高到 3 分钟,并观察到日志文件中发生的事情非常非常缓慢。我会删除该应用程序,将所有配置重置回您最初想要的任何内容并重新部署。即使第一次失败,Cloud Foundry 也会自动重启,直到它工作为止。
【解决方案3】:

您可以使用以下命令禁用运行状况 (短期解决方案)

cf push app_name -p target/app.jar -u none

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多