我有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流量,一个系统涉及数据库查询。
答案 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)
}
}