【问题标题】:JVM consuming 100% of one CPUJVM 消耗 100% 的 CPU
【发布时间】:2013-10-07 12:07:22
【问题描述】:

我们有一个在 Ubuntu Server 12.04 和 java 上运行的应用程序。

java -version 返回:

java 版本“1.7.0_40”

Java(TM) SE 运行时环境(内部版本 1.7.0_40-b43)

Java HotSpot(TM) 64 位服务器 VM(内部版本 24.0-b56,混合模式

我们还有其他具有相同技术但没有问题的应用程序。

服务器信息: 内存:2G 操作系统:Ubuntu 服务器 12.04 CPU Nb: 2

应用程序语言是 scala。

运行一段时间后,JVM 似乎在休眠。一个 CPU 继续以 100% 旋转。

JVM 选项:

-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:-DisableExplicitGC -XX:CMSFullGCsBeforeCompaction=1 -XX :+CMSClassUnloadingEnabled -XX:+CMSIncrementalMode -XX:MaxGCPauseMillis=1500 -XX:GCTimeRatio=9 -XX:CMSInitiatingOccupancyFraction=50 -XX:-UseGCOverheadLimit -XX:MaxHeapFreeRatio=60

使用 jstat -gcutil [PID],我看到 FGC 增长很快。

你对这个问题有什么想法吗?

谢谢

【问题讨论】:

  • 100% CPU 使用率99.9% 表明大量 GC 活动...另外,2 核 2G RAM?似乎不合标准......另外,请务必检查堆转储以查看堆上的内容,以便能够纠正这种情况
  • 还有什么人可以在这里真正帮助您?没有任何信息可以指出问题。 Should read this.
  • JIT 编译已连接,或 GC 正在工作。没什么不好的,它不会持续很长时间。
  • 您是否正在运行任何繁重的操作?它是每次都发生还是在某些情况下发生?
  • 我分析了堆转储,在 java.util.concurrent.ThreadPoolExecutor 下看到更多 java.util.concurrent.LinkedBlockingQueue

标签: java scala jvm ubuntu-12.04 finagle


【解决方案1】:

你对这个问题有什么想法吗?

它可以是任意数量的东西。但是(IMO)最可能的解释是您的应用程序中存在一个表现为无限循环的错误。

将调试器附加到 JVM。或者,如果您不能这样做,请向其发送必要的信号,使其生成一个线程转储到控制台输出流。然后分析转储,看看是否能得到任何线索。

这不是我们可以给你一个神奇答案的问题。您很可能需要根据您对应用程序的了解以及您自己在分析/调试方面的辛勤工作来自己解决这个问题。 (而且这是 Scala 的事实意味着这也可能是 Scala 编译器或运行时中的错误。)

【讨论】:

  • 我分析了堆转储,在 java.util.concurrent.ThreadPoolExecutor 下看到更多 java.util.concurrent.LinkedBlockingQueue
  • 好吧,继续。接下来,您需要弄清楚为什么您的代码会在此时旋转。
  • 是的,我知道,但我没找到。
  • jstack -l [PID] 返回:2013-10-07 12:41:06 全线程转储 Java HotSpot(TM) 64 位服务器 VM(24.0-b56 混合模式):“附加侦听器" 守护进程 prio=10 tid=0x00007f5b2000d800 nid=0x659 等待条件 [0x0000000000000000] java.lang.Thread.State: RUNNABLE 锁定可拥有同步器:- 无 "pool-9-thread-5" 守护进程 prio=10 tid=0x00007f5b14016800 nid= 0x514 等待条件 [0x00007f5b0f0ef000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - 停车等待 (a
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 2016-10-27
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多