如何判断为什么Play 2.4正在关闭

时间:2015-05-14 21:03:00

标签: logging playframework-2.0 akka

我有Play 2.4应用程序,我目前正在开发模式中运行,我想转移到生产。唯一的障碍是每隔一天左右运行,它只是在没有理由的情况下关闭。日志中的消息:

2015-05-14 03:06:11 -0600 [INFO] from application in play-fork-run-akka.actor.default-dispatcher-22 - Application shutdown...

如何让Play给我一个更具体的消息?这非常令人沮丧,因为它没有说任何其他内容。在我能看到的任何地方都没有例外,我在记录错误方面做得相当彻底。

对于一些上下文,我在后台运行3个Akka actor系统,每个系统有5-30个演员。他们发出一些http流量,一个系统涉及数据库查询。

2 个答案:

答案 0 :(得分:3)

我想我几天前几乎有同样的问题。在我的情况下,我能够在stacktrace中发现actor系统正在关闭死于NullPointerException。

为了防止JVM关闭,您应该添加:

akka.jvm-exit-on-fatal-error = false
play.akka.jvm-exit-on-fatal-error = false

到您的.conf文件。我不确定哪个字符串确实有影响,所以我添加了两个。它有所帮助。

答案 1 :(得分:1)

让我们看看你的演员代码?为了演示的目的,你可以减少它吗?

我在演员主循环中做了类似的事情。如果我的演员爆炸,它会非常清楚地记录下来。如果爆炸了,我就知道原因了。

 private def doWork(workSender: ActorRef, work: Work): Unit = {

      work.doWork().onComplete {
        case Success(res) =>
          log.debug("Success during doWork on {}", work)
          self ! WorkComplete(WorkStatus.Success)
        case Failure(e) =>
          log.error(e, "Failure during doWork on {}", work)
          self ! WorkComplete(WorkStatus.Error)
      }
  }
相关问题