2012-11-07 6 views
1

У меня проблема с использованием процессора в wowza.wowza java high 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) 

эта тема заняла высокое значение. это ошибка jdk или еще?

это мое окружение.

CentOS релиз 5.4 (Final)

WowzaMediaServer-3.1.2

Java версии 1.6.0_23 Java (TM) SE Runtime Environment (сборка 1.6.0_23-b05) Java HotSpot (TM) 64-разрядная серверная VM (сборка 19.0-b09, смешанный режим)

ответ

4

Я бы сначала проверял, действительно ли это потребляет процессор. Если вы профилируете приложение, может показаться, что он тратит время в этом методе, когда метод фактически блокирует. У большинства профилировщиков есть проблемы, объясняющие разницу между методом, который расходует выделение времени в собственном коде (потребляет много CPU), и тот, который блокирует (потребляет очень мало CPU)

В старых версиях Java были ошибки, которые могут привести к селектор вращается. то есть он не возвращает никаких селекторов без блокировки в цикле занятости, даже если он по-прежнему функционирует правильно в противном случае. Я полагаю, что новая версия Java исправлена. Я бы попробовал обновление Java 6 update 35 или Java 7 update 7, чтобы проверить, исправляет ли он вашу проблему.

Я предпочитаю использовать блокирующий NIO, если есть несколько сотен соединений, так как это намного проще ИМХО.

+1

спасибо за ответ. Я попробую jdk7. – samohan

+0

Я попробовал 2 jdk версию jdk1.7.0_9 и jdk1.6.0_37. но высокий уровень использования процессора все же произошел. есть много этой темы и занимает много времени и процессор. – samohan

+0

Значит, он высок, но не потребляет 100% одного процессора? –

0

У меня была такая же проблема, я установил его с остановкой НТП службы и установить дату вручную и перезапустить нтп службы:

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