2012-11-07 129 views
1

我有关于在wowza CPU使用率的问题。wowza java高CPU使用率

这是可疑的线程。这个线程是高CPU。

SocketAcceptorIoProcessor-1.0 prio=10 tid=0x0000002a9fb53000 nid=0x2428 runnable   [0x000000004f017000] 
java.lang.Thread.State: RUNNABLE 
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) 
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:210) 
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) 
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) 
- locked <0x00000007d82ba4e8> (a sun.nio.ch.Util$2) 
- locked <0x00000007d82ba4d8> (a java.util.Collections$UnmodifiableSet) 
- locked <0x00000007d82ad450> (a sun.nio.ch.EPollSelectorImpl) 
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) 
at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(Unknown Source) 
at org.apache.mina.util.NamePreservingRunnable.run(Unknown Source) 
at java.lang.Thread.run(Thread.java:662) 

此线程花了高cpu。这是JDK的错误还是?

这是我的环境。

CentOS版本5.4(最终)

WowzaMediaServer-3.1.2

Java版本1.6.0_23 的Java(TM)SE运行时环境(建立1.6.0_23-B05) 的HotSpot的Java(TM) 64位服务器VM(内置19.0-b09,混合模式)

回答

4

我首先会检查它是否真的耗费CPU。如果你正在分析应用程序,那么当方法实际上被阻塞时,它可能似乎花费在这个方法中的时间分配。大多数分析器都有问题,它们会告诉我们在本地代码中花费大量时间的方法(消耗大量CPU)和阻塞(CPU消耗非常少)的方法之间存在差异。

旧版本的Java有bug,可能会导致选择器旋转。即在繁忙的循环中它不返回选择器,即使它仍然正常工作。我相信新版本的Java已经修复了。我会尝试Java 6更新35或Java 7更新7,以查看它是否修复了您的问题。

如果少于几百个连接,我更喜欢使用阻塞NIO,因为它简单得多。

+1

谢谢你的答复。我会尝试jdk7。 – samohan

+0

我试了2个jdk版本jdk1.7.0_9和jdk1.6.0_37。但高CPU使用率仍然发生。这个线程有很多,需要很多时间和CPU。 – samohan

+0

所以它很高,但不消耗一个CPU的100%? –

0

我有同样的问题,我有停止NTP服务的固定,然后手动设置日期和重启NTP服务:

 /etc/init.d/ntp stop 
     date -s "$(date)" 
     /etc/init.d/ntp start