2012-11-07 123 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