如何判断 Play 2.4 关闭的原因
How to tell why Play 2.4 is shutting down
我有 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 演员系统,每个系统有 5-30 个演员。他们发送一些 http 流量,一个系统涉及数据库查询。
我想我几天前遇到了几乎相同的问题。在我的例子中,我能够在堆栈跟踪中发现 actor 系统正在关闭死于 NullPointerException。
为了防止 JVM 关闭,您应该添加:
akka.jvm-exit-on-fatal-error = false
play.akka.jvm-exit-on-fatal-error = false
到您的 .conf
文件。我不确定哪个字符串实际上有影响,所以我添加了两个。有帮助。
让我们看看您的 Actor 代码?您可以 trim 将它下载下来用于演示目的吗?
我在 actor 主循环中做了类似的事情。如果我的演员爆炸了,它会非常清楚地记录下来。如果真的爆炸了,我知道为什么。
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)
}
}
我有 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 演员系统,每个系统有 5-30 个演员。他们发送一些 http 流量,一个系统涉及数据库查询。
我想我几天前遇到了几乎相同的问题。在我的例子中,我能够在堆栈跟踪中发现 actor 系统正在关闭死于 NullPointerException。
为了防止 JVM 关闭,您应该添加:
akka.jvm-exit-on-fatal-error = false
play.akka.jvm-exit-on-fatal-error = false
到您的 .conf
文件。我不确定哪个字符串实际上有影响,所以我添加了两个。有帮助。
让我们看看您的 Actor 代码?您可以 trim 将它下载下来用于演示目的吗?
我在 actor 主循环中做了类似的事情。如果我的演员爆炸了,它会非常清楚地记录下来。如果真的爆炸了,我知道为什么。
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)
}
}