Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA和CentOS 6.3带来的高CPU负载_Java_Multithreading_Performance_Cpu_Centos6 - Fatal编程技术网

JAVA和CentOS 6.3带来的高CPU负载

JAVA和CentOS 6.3带来的高CPU负载,java,multithreading,performance,cpu,centos6,Java,Multithreading,Performance,Cpu,Centos6,我看到运行java程序时cpu利用率很高。我发现jstack可以帮助调试它卡住并占用CPU的地方。我用jstack获得了输出,发现很少有线程处于阻塞状态 在这里,我使用了java 1.7,为了确认负载问题,我在同一个操作系统(即CentOS 6.3)上用旧的1.6替换了java,但问题仍然存在,因为我已经使用java 1.6(同样也是1.7)和CentOS 5.4的组合进行了测试,这两种组合运行良好,占用的cpu更少 除了centos 6.3的操作系统出现负载问题外,没有任何更改 我如何找到将线

我看到运行java程序时cpu利用率很高。我发现jstack可以帮助调试它卡住并占用CPU的地方。我用jstack获得了输出,发现很少有线程处于阻塞状态

在这里,我使用了java 1.7,为了确认负载问题,我在同一个操作系统(即CentOS 6.3)上用旧的1.6替换了java,但问题仍然存在,因为我已经使用java 1.6(同样也是1.7)和CentOS 5.4的组合进行了测试,这两种组合运行良好,占用的cpu更少

除了centos 6.3的操作系统出现负载问题外,没有任何更改

我如何找到将线程指向jstack输出的相关代码,以下是我发现的输出

OS - CentOS 6.3 x86_64 (2.6.32-279.el6.x86_64)
CPU core - 8
Ram - 16GB
Java version - "1.7.0_17"
jstack输出:

Deadlock Detection:

No deadlocks found.

none
null_check
null_assert
range_check
class_check
array_check
intrinsic
bimorphic
unloaded
uninitialized
unreached
unhandled
constraint
div0_check
age
predicate
loop_limit_check
Thread 4514: (state = BLOCKED)

Locked ownable synchronizers:
    - None

Thread 4493: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
 - java.lang.ref.ReferenceQueue.remove(long) @bci=44, line=135 (Interpreted frame)
 - java.lang.ref.ReferenceQueue.remove() @bci=2, line=151 (Interpreted frame)
 - java.lang.ref.Finalizer$FinalizerThread.run() @bci=3, line=177 (Interpreted frame)

Locked ownable synchronizers:
    - None

Thread 4491: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
 - java.lang.Object.wait() @bci=2, line=503 (Interpreted frame)
 - java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=133 (Interpreted frame)

Locked ownable synchronizers:
    - None
Java信息输出:

Java System Properties:

java.runtime.name = Java(TM) SE Runtime Environment

java.vm.version = 23.7-b01

sun.boot.library.path = /usr/java/jdk1.7.0_17/jre/lib/amd64

hadoop.root.logger = INFO,console

java.vendor.url = http://java.oracle.com/

java.vm.vendor = Oracle Corporation

path.separator = :

file.encoding.pkg = sun.io

java.vm.name = Java HotSpot(TM) 64-Bit Server VM

sun.os.patch.level = unknown

sun.java.launcher = SUN_STANDARD

user.country = US

user.dir = /home/ravi

java.vm.specification.name = Java Virtual Machine Specification

java.runtime.version = 1.7.0_17-b02

java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment

os.arch = amd64

java.endorsed.dirs = /usr/java/jdk1.7.0_17/jre/lib/endorsed

line.separator =


VM Flags:

-Xmx4000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=//opt/cloudera/parcels/CDH-4.2.1-1.cdh4.2.1.p0.5/lib/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=//opt/cloudera/parcels/CDH-4.2.1-1.cdh4.2.1.p0.5/lib/hadoop -Dhadoop.id.str= -Dhadoop.root.logger=INFO,console -Djava.library.path=//opt/cloudera/parcels/CDH-4.2.1-1.cdh4.2.1.p0.5/lib/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xms256m -Dhadoop.security.logger=INFO,NullAppender

阻塞的线程不使用任何CPU。就像大卫说的,你对那些可以运行的线程感兴趣。这些可能正在使用CPU。@DavidSchwartz:同意,但应该更多地等待,正如我所说的CentOS 6.3内核版本“2.6.32-279.el6.x86_64”本身看起来有缺陷,有人对此进行了更新吗。裁判: