【问题标题】:How to optimize CPU utilization while running Maven tests如何在运行 Maven 测试时优化 CPU 利用率
【发布时间】:2013-12-18 08:09:43
【问题描述】:

我有四核处理器。当我在我的项目中运行“mvn test”时,CPU 几乎是 100% 加载的:

 PID   USER     PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   
 20641 user     20   0 3338212 339232   5076 S 397.7  9.1   2:16.19 java

我的单元测试是因为超时。当我使用 eclipse 插件进行 JUnit 测试时,运行速度更快,并且不会 100% 加载 CPU。我的配置如下...

Maven 3.1.0
JUnit 4.10
Oracle JDK 1.7.0_40

有没有办法解决这个问题?可能我应该用 maven 做一些配置还是使用 maven-surefire-plugin 和特定配置?

【问题讨论】:

  • 没有你的测试很难说。如果你测试你的解密算法,那就不足为奇了。如果你测试“Hello, World”,那会很奇怪。
  • 在我的一些测试中,我创建了新线程,它必须等待(有一些超时)来自另一个线程的一些通知。
  • 您能否展示 maven-surefire-plugin 的完整配置,特别是您是否使用多线程配置、分叉 JVM 等?
  • 我不使用 maven-surefire-plugin。我只是运行测试: /usr/java/latest/bin/java -classpath /usr/local/apache-maven-3.1.0/boot/plexus-classworlds-2.4.2.jar -Dclassworlds.conf=/usr/ local/apache-maven-3.1.0/bin/m2.conf -Dmaven.home=/usr/local/apache-maven-3.1.0 org.codehaus.plexus.classworlds.launcher.Launcher 测试
  • @DmitryKrivenko 你解决了吗?如果是这样,您可以发布您的答案,我面临同样的问题

标签: java maven testing junit cpu-usage


【解决方案1】:

您应该使用分析器连接到该虚拟机并分析 CPU 时间花费在何处。为了快速获得结果,您可以使用Java Visual VM profiling。如需更详细的分析,请使用专业的分析器。

【讨论】:

    【解决方案2】:

    我也会推荐VisualVM。还有另一个工具可能会有所帮助,它被称为jvmtop,用于命令行。

    您还应该确保不会产生比可用内核更多的线程,因为交换会大量使用 CPU。还要注意线程等待的方式,因为当线程处于紧密循环中时会发生如此高的 CPU 负载,例如while(!foo) {} ...等

    【讨论】:

      【解决方案3】:

      设置 MAVEN_OPTS 环境变量可确保有足够的内存可用于运行 Maven 任务并降低 CPU 利用率。

      在 Mac OS X 上,您可以编辑 .bash_profile 文件并添加以下内容:

      export MAVEN_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=1024m"
      

      重新启动终端会话或运行 source .bash_profile 以激活环境变量。 在 Linux 上,您可以编辑 .bashrc 文件并添加以下内容:

      export MAVEN_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=1024m"
      

      重新启动终端会话或运行 source .bashrc 以激活环境变量。 在 Windows 上,在用户级别设置环境变量

      MAVEN_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=1024m"
      

      您的 MAVEN_OPTS 环境变量现在已设置。如果需要,请随意增加指定的值,例如,如果您在运行项目时遇到“内存不足”错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        相关资源
        最近更新 更多