【问题标题】:Play Framework 2.3.x scala - Application shutdown without exceptionPlay Framework 2.3.x scala - 应用程序无异常关闭
【发布时间】:2015-06-02 03:00:52
【问题描述】:

我有一个播放框架 2.3 应用程序。当我在开发或生产模式下部署我的本地机器时,它工作得非常好。但是,当我在另一台服务器(Red Hat Enterprise Linux Server 6.2 版,圣地亚哥)中部署时,应用程序在大约 2 小时后关闭。
在多次分析应用程序后,我得出的结论是没有内存问题,死锁等。一切正常。我正在覆盖 GlobalSettings 中的 onStop 方法并记录如下消息:

 override def onStop(app: Application) {
    Logger.info("Application is shutting shutdown...ByeBye")
  }

在日志中,这是我在关机前看到的全部内容:

2015-05-27 00:36:54,515 - [INFO] - from application in **Thread-4** 
Application is shutting shutdown...ByeBye

由于某种原因,它总是来自 Thread-4。 我有 DEBUG 级别的日志,我没有看到任何可能引发任何危险信号的异常或消息。似乎有些东西正在杀死应用程序或发送停止信号。我无法确定这次关闭的原因。除了我的应用程序之外,没有任何内容被记录到 /var/log/messages 或任何其他日志中。 有什么想法可以让我理解应用程序停止的原因吗?

我的申请的一些细节: 这很简单,它公开了一个 REST API。我正在使用“dist”命令构建一个二进制文件及其所有依赖项。我是这样开始的:

/path/to/binary -Dhttp.port=5000  -J-Xmx32g -Dconfig.resource=application_prod.conf

谢谢。

【问题讨论】:

  • 你确定 32 gigs 的最大堆大小可以吗?
  • 是的。我正在部署的服务器有数百个可用 RAM,而我的应用程序使用的内存远少于 32gb。我分析了一下,发现内存很好,不是关机的原因。
  • 我也面临同样的问题。就我而言,我什至不知道为什么服务器会关闭,而覆盖的方法 onStop 没有被调用。
  • 你在 play 应用中使用 akka 吗?

标签: java scala unix playframework jvm


【解决方案1】:

有一个known issue providing java opts via -J parameter。请改用JAVA_OPTS="-Xmx32g" ./activator。 完成此操作后,检查您的运行进程列表以确认 java opts 是否真的存在。

【讨论】:

    【解决方案2】:

    如果您一直通过 ssh 从终端启动应用程序,一段时间后 ssh 会话可能会终止并且应用程序进程会附加到会话进程, 我通过 nohup 执行 start 命令解决了这个问题,因此该过程将不再是交互式的,并将日志输出到指定的文件而不是终端

    【讨论】:

      【解决方案3】:

      有一个类似的问题,显然在调试模式下运行时(“运行”命令而不是“开始”用于生产)它曾经在 4 秒后无异常地关闭。切换到产品。模式解决了我的问题。

      【讨论】:

        猜你喜欢
        • 2015-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-09
        • 1970-01-01
        • 1970-01-01
        • 2015-06-21
        相关资源
        最近更新 更多