【问题标题】:PlayFramework Hangs After DaysPlayFramework 几天后挂起
【发布时间】:2018-02-21 07:19:13
【问题描述】:

服务器一次成功运行,但几天后挂起,没有错误日志。然后,所有请求都不会得到响应。

这是带有选项的启动命令

sudo /opt/dev -Dhttps.port=443 -Dhttp.port=9000 -J-Xms3277m -J-Xmx3277m -J-XX:ParallelGCThreads=2 -J-Xmn2574M -J-XX:+UseConcMarkScMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-server &

/opt/dev 是activator阶段生成的脚本文件

===========服务器信息==========

linux:Ubuntu 14.04.5 LTS 内存:4G openjdk 版本“1.8.0_141”

===========进程信息========

PID   USER      PR   NI VIRT   RES     SHR   S   %CPU  %MEM  TIME     COMMAND

15037 root      20   0 5978800 2.280g  31216 S   0.0   58.3  63:33.82 java

===========端口信息===================

tcp6  :::9000        :::*               LISTEN      15037/java

tcp6  :::443         :::*               LISTEN      15037/java

===========其他信息==========

 play version 2.3.2
 scala version 2.11.1

akka 设置

 akka.jvm-exit-on-fatal-error = false
 play.akka.jvm-exit-on-fatal-error = false
 akka.default-dispatcher.fork-join-executor.pool-size-max =64
 akka.actor.debug.receive = on

============================================

【问题讨论】:

  • 您是否将控制器用作单例?
  • 是的.......我使用控制器作为scala对象。并且 80%​​ 的服务是 scala Object ,20% 的服务是 scala 类。

标签: scala akka playframework-2.3


【解决方案1】:

这些步骤可以帮助确定问题..或者它们可能只是朝着这个方向迈出的第一步。

  1. 尝试从添加-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/where/to/put/hprof 开始,根据您的启动脚本参数认为您需要使用-J-XX 而不是-XX。这将在 OOM 的情况下创建堆转储。

  2. 在端点添加日志记录(在开始和结束时),以便能够检查播放是否收到请求,甚至没有发生这种情况。

  3. 当您的游戏无响应时,请尝试检查打开的文件描述符并将其与您的限制进行比较。要检查你可以找到你的java进程的pid并调用sudo ls -al /proc/7333/fd/|wc -l来查看你的限制使用ulimit -a

  4. 尝试控制 akka 队列会很好。如果您将相同的调度程序用于前端请求目的和一些后台处理(调度程序可能会填充较长的后台任务)

【讨论】:

    【解决方案2】:

    我会执行 Evgeny 建议的所有诊断步骤,此外:

    1. 将“akka.jvm-exit-on-fatal-error”和“play.akka.jvm-exit-on-fatal-error”改为true,这可能会掩盖您的问题。

    2. 当正在运行的进程处于此状态时,对其进行堆栈转储,并使用它来识别问题或将其发布到此处。见How to get a complete stack trace of a running java program that is taking 100% cpu?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多