Scala应用程序获得" App启动超时"在Heroku上

时间:2014-11-22 19:47:44

标签: scala heroku timeout

我想要部署到Heroku的Scala应用程序(带有Jetty的http4s)。我按照https://devcenter.heroku.com/articles/getting-started-with-scala上的说明进行操作,并将其作为我的Procfile:

  

web:target / universal / stage / bin / myappname

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

  

从端口4000开始   [main] INFO org.eclipse.jetty.util.log - 记录初始化@ 285ms
  [主要] 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 {/,null,AVAILABLE}
  [main] INFO org.eclipse.jetty.server.ServerConnector - 已启动ServerConnector @ 30ec6243 {HTTP / 1.1} {127.0.0.1:4000}
  [主要] 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 app [web.1]:拿起JAVA_TOOL_OPTIONS:-Xmx384m -Djava.rmi.server.useCodebaseOnly = true
  2014-11-22T19:27:55.495116 + 00:00 app [web.1]:从36115号港口开始   2014-11-22T19:27:55.761411 + 00:00 app [web.1]:[main] INFO org.eclipse.jetty.util.log - 记录初始化@ 645ms
  2014-11-22T19:27:56.032766 + 00:00 app [web.1]:[main] INFO org.eclipse.jetty.server.handler.ContextHandler - 已启动oejsServletContextHandler @ 397f0e73 {/,null,AVAILABLE}
  2014-11-22T19:27:55.962916 + 00:00 app [web.1]:[main] INFO org.eclipse.jetty.server.Server - jetty-9.2.3.v20140905
  2014-11-22T19:27:56.055280 + 00:00 app [web.1]:[main] INFO org.eclipse.jetty.server.Server - 已启动@ 967ms
  2014-11-22T19:27:56.055064 + 00:00 app [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 [router]:at = error code = H20 desc =" App boot timeout" method = GET path =" /" host = myappname.herokuapp.com request_id = c05b5bf6-6268-4c37-8525-4e58c1bda496 fwd =" 24.4.136.119" dyno = connect = service = status = 503 bytes =

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

2 个答案:

答案 0 :(得分:1)

您可能正在侦听localhost而不是0.0.0.0

答案 1 :(得分:0)

在这里寻找involving的答案error code,我有以下建议:

  • 确保您可以使用foreman start
  • 在本地启动您的应用
  • 了解如何在不同的端口上启动https / Jetty应用程序(我还没有使用它)
    • (例如,我将使用适用于Play2的内容,即设置http.port
  • 修改您的Procfile,附加使用$ PORT的http.port参数,如下所示:

web: target/universal/stage/bin/myappname -Dhttp.port=$PORT

我怀疑如果没有这个端口设置参数,你的webapp就会在与Heroku检查的端口不同的端口上启动,因此超时。