【发布时间】: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