【问题标题】:Playframework unusual CPU loadPlayframework 异常 CPU 负载
【发布时间】:2014-04-11 07:00:24
【问题描述】:

最近我们开始使用 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个play server运行

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。

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

【问题讨论】:

  • 抱歉,不相关,但您是以root 运行这些网络应用程序吗?我希望那是一个虚拟机,即使那样......
  • 有关部署的任何详细信息?
  • 是的,这些应用程序在 docker 容器中运行。
  • 它基本上是在数据库中存储一些数据并从数据库中读取
  • 我还在容器外启动了应用程序以隔离 docker 的问题,并且该模式仍在继续。有什么提示或建议吗?

标签: scala nginx playframework playframework-2.0 docker


【解决方案1】:

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

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

-> 虚拟机内 100% 的 CPU 负载

问题确实存在于我们的实时环境中,应用程序是通过 start 脚本预先打包运行的。我们还让它在 docker 容器中运行(它又在 EC2 虚拟机中运行)。

所以在我的情况下,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>

看看有没有什么可疑的东西出现。

【讨论】:

    【解决方案2】:

    您是如何运行 Play 应用程序的?我在使用 play ~run 运行时也遇到过类似的高负载,因为它会不断地监视文件的变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-25
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多