Playframework异常的CPU负载

时间:2014-03-07 22:18:27

标签: scala nginx playframework playframework-2.0 docker

最近我们开始使用PlayFramework并在CPU负载中看到一些异常活动。

机器详细信息和其他配置:

32G Machine
12  Cores
PlayFramework 2.2.0
java -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m
java applications are running within a docker container(Docker version 0.8.0).

nginx后面有6个播放服务器

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
31752 root      20   0 7876m 1.2g  14m S  716  3.8 150:55.28 java
26282 root      20   0 7862m 1.2g  14m S   48  3.8 310:51.65 java
56449 root      20   0 7789m 389m  13m S    2  1.2   0:33.10 java
40006 root      20   0 7863m 1.2g  14m S    2  3.8  17:56.41 java
42896 root      20   0 7830m 1.2g  14m S    1  3.8  15:10.30 java
52119 root      20   0 7792m 1.2g  14m S    1  3.7   8:48.38 java

请求率最高为100Req / s。

之前有没有人遇到过类似的问题? 请告诉我。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题。但是,我只是在我的机器上进行开发设置时遇到了问题:

  • 玩!应用程序通过 play run
  • 启动
  • 在docker容器中
  • 在VM中运行

- > VM内部100%CPU负载

问题存在于我们的实时环境中,其中应用程序通过 start 脚本预先打包运行。我们还让它在那里的docker容器中运行(然后在EC2 VM中运行)。

所以在我的情况下似乎 play run 会有所不同 - 您是否正在使用 play run 在docker容器中启动应用程序?

编辑:此外,Netty中似乎存在与 epoll选择器相关的错误http://www.electrotank.com/forums/showthread.php?12927-Well-Known-JDK-bug-in-Netty https://code.google.com/p/spymemcached/issues/detail?id=279

第二个链接描述了一种解决方法,涉及将 -XX:CMSInitiatingOccupancyFraction JVM参数设置为80或其他。

就我而言,这并没有帮助......

您可以考虑分析您的java进程,例如使用

sudo strace -cf -p <pid>

并查看是否有任何可疑现象。

答案 1 :(得分:0)

你是如何运行游戏应用程序的?与play ~run一起运行时,我遇到了类似的高负载,因为它会不断监视文件的变化。