Scala应用程序获得;应用程序启动超时“;论赫罗库

Scala应用程序获得;应用程序启动超时“;论赫罗库,scala,heroku,timeout,Scala,Heroku,Timeout,我有一个Scala应用程序(带有Jetty的http4s),我想部署到Heroku。我按照上的说明操作,并将此作为我的程序文件: web:target/universal/stage/bin/myappname 我使用sbt和sbt native packager构建应用程序,并运行sbt编译阶段。在本地计算机上运行target/universal/stage/bin/myappname时,我可以使用以下日志成功启动Jetty服务器: 从端口4000开始 [main]INFO org.eclip

我有一个Scala应用程序(带有Jetty的http4s),我想部署到Heroku。我按照上的说明操作,并将此作为我的程序文件:

web:target/universal/stage/bin/myappname

我使用sbt和sbt native packager构建应用程序,并运行
sbt编译阶段
。在本地计算机上运行
target/universal/stage/bin/myappname
时,我可以使用以下日志成功启动Jetty服务器:

从端口4000开始
[main]INFO org.eclipse.jetty.util.log-日志已初始化@285ms
[main]INFO org.eclipse.jetty.server.server-jetty-9.2.3.v20140905
[main]INFO org.eclipse.jetty.server.handler.ContextHandler-启动o.e.j.s。ServletContextHandler@45c5082a{/,空,可用}
[main]INFO org.eclipse.jetty.server.ServerConnector-已启动ServerConnector@30ec6243{HTTP/1.1}{127.0.0.1:4000}
[main]INFO org.eclipse.jetty.server.server-在421ms时启动

在Heroku上,我还获得了Jetty服务器启动的日志,但在以下情况下还有一个额外的超时行:

2014-11-22T19:27:53.648838+00:00 heroku[web.1]:使用命令`target/universal/stage/bin/myappname`
2014-11-22T19:27:54.967288+00:00应用程序[web.1]:选择的JAVA工具选项:-Xmx384m-Djava.rmi.server.useCodebaseOnly=true
2014-11-22T19:27:55.495116+00:00应用程序[web.1]:从端口36115开始
2014-11-22T19:27:55.761411+00:00应用程序[web.1]:[main]INFO org.eclipse.jetty.util.log-日志记录已初始化@645ms
2014-11-22T19:27:56.032766+00:00应用程序[web.1]:[main]INFO org.eclipse.jetty.server.handler.ContextHandler-启动o.e.j.s。ServletContextHandler@397f0e73{/,空,可用}
2014-11-22T19:27:55.962916+00:00应用程序[web.1]:[main]INFO org.eclipse.jetty.server.server-jetty-9.2.3.v20140905
2014-11-22T19:27:56.055280+00:00应用程序[web.1]:[main]INFO org.eclipse.jetty.server.server-开始于967ms
2014-11-22T19:27:56.055064+00:00应用程序[web.1]:[main]INFO org.eclipse.jetty.server.ServerConnector-已启动ServerConnector@1df3b191{HTTP/1.1}{127.0.0.1:36115}
2014-11-22T19:28:07.147193+00:00 heroku[路由器]:at=错误代码=H20 desc=“应用程序启动超时”方法=GET path=“/”主机=myappname.herokuapp.com请求\u id=c05b5bf6-6268-4c37-8525-4e58c1bda496 fwd=“24.4.136.119”dyno=connect=service=status=503字节=


Heroku说我的应用程序启动超时的原因是什么?提前感谢。

在这里寻找答案,我有以下建议:

  • 确保您可以使用
    foreman start
  • 了解如何在不同端口上启动https/Jetty应用程序(我没有使用过)
    • (作为一个例子,我将使用对Play2有效的方法,即设置
      http.port
  • 编辑
    Procfile
    ,添加一个使用$port的
    http.port
    参数,如下所示:
web:target/universal/stage/bin/myappname-Dhttp.port=$port


我怀疑,如果没有此端口设置参数,您的Web应用程序将在与Heroku检查的端口不同的端口上启动,因此超时。

您可能是在本地主机上而不是在0.0.0.0上侦听。

我可以使用
foreman start
在本地启动我的应用程序。我的代码在环境变量port定义的端口上启动应用程序:
val port=Properties.envOrElse(“port”,“8080”).toInt
。我还将
-Dhttp.port=$port
添加到Procfile中,但没有成功。您的应用程序在本地启动需要多长时间?在您的Heroku日志中,在等待“org.eclipse.jetty.server.server-Started”之前,一切看起来都很好。你知道你的应用程序中有什么东西会导致这种情况吗?对我来说,将
BlazeBuilder.bindHttp(Properties.envOrElse(“PORT”,“8080”).toInt)
更改为
BlazeBuilder.bindHttp(Properties.envOrElse(“PORT”,“8080”).toInt,“0.0.0”)
修复了这个问题(我使用的是Blaze后端,而不是Jetty,但这不会有什么区别)。