1

我对 wowza 中的 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 Runtime Environment (build 1.6.0_23-b05) Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, 混合模式)

4

2 回答 2

5

我会首先检查它是否真的在消耗 CPU。如果您正在分析应用程序,它可能会在此方法中花费大量时间,而该方法实际上是阻塞的。大多数分析器在区分在本机代码中花费大量时间(消耗大量 CPU)和阻塞(消耗很少 CPU)的方法之间存在问题

旧版本的 Java 存在可能导致选择器旋转的错误。即它在繁忙的循环中保持不返回任何选择器而不会阻塞,即使它仍然可以正常工作。我相信较新版本的 Java 已修复此问题。我会尝试 Java 6 update 35 或 Java 7 update 7 看看它是否能解决您的问题。

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

于 2012-11-07T08:47:41.187 回答
0

我遇到了同样的问题,我通过停止 ntp 服务修复它并手动设置 DATE 并重新启动 ntp 服务:

        /etc/init.d/ntp stop
        date -s "$(date)"
        /etc/init.d/ntp start
于 2013-08-16T11:29:07.807 回答