Недавно мы начали испытывать развертывания в Weblogic 12c с помощью утилиты weblogic.Deployer
. Мы можем нормально развернуть EAR, но всякий раз, когда мы пытаемся отменить развертывание этого приложения, когда управляемый сервер все еще работает, оно начнет использовать 100% нашего ЦП (4-ядерный Xeon, голое железо).
После некоторой переделки и бесчисленных дампов потоков мы смогли изолировать проблему на 4 зависших потоках. Каждый из них потреблял 100% ресурсов ядра. Средняя нагрузка подскочит с 0,10 до 4,00 максимум за 5 минут.
Это темы, которые, кажется, застряли:
"ExecuteThread: '3' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007fb52801c800 nid=0x6bf0 runnable [0x00007fb58a0ad000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <0x00000000e18c66d0> (a sun.nio.ch.Util$2)
- locked <0x00000000e18c66c0> (a java.util.Collections$UnmodifiableSet)
- locked <0x00000000e18c6598> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
at weblogic.socket.NIOSocketMuxer.selectFrom(NIOSocketMuxer.java:541)
at weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:470)
at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119)
Кажется, у многих людей такая же проблема (но не с Weblogic):
https://github.com/netty/netty/issues/327
https://issues.jboss.org/browse/XNIO-172
Почему select() потребляет так много процессорного времени в моей программе?
Я не думаю, что это могло произойти из-за старой версии JDK. java -version
говорит:
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
Я немного погуглил, но ничего не нашел по этому поводу. Знаете ли вы, эксперты WL, в чем может быть причина этой проблемы?
Большое спасибо!