scala - Playframework异常的CPU负载

标签 scala nginx playframework playframework-2.0 docker

最近,我们开始使用PlayFramework,并发现CPU负载中有一些异常 Activity 。

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

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。

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

最佳答案

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

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

  • -> VM内100%CPU负载

    在我们的实时环境中不存在问题,在该环境中,该应用程序是通过启动脚本预先打包运行的。我们也将其运行在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>
    

    看看是否有可疑的东西出现。

    关于scala - Playframework异常的CPU负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22261807/

    相关文章:

    php - Docker 没有 MySQL 连接到 Nginx

    json - Scala Jackson 对象映射器在 case 类中设置 null 而不是默认值

    scala - 如何从特征中获取常量值?

    python - 如何在 uWSGI 中正确加载 Flask 应用程序模块?

    java - 如何使用 Java 从 KML 即时创建 KMZ 文件

    java - 如何在 Java Play 中删除 HTTP 请求!筛选?

    java - 依赖注入(inject)在 Play Framework 2.4.x 的模型或测试中不起作用

    java - Spark模式rdd到RDD

    scala - 隐式使用结构类型

    通过 nginx 代理的 Docker 环境导致 502 Bad Gateway