Wildfly 10 - XNIO WorkerThread (I / O-x по умолчанию) со 100% загрузкой процессора - PullRequest
0 голосов
/ 03 ноября 2018

Мы меняем топологию нашего кластера и сталкиваемся со 100% -ной проблемой ЦП в потоке «I / O-x по умолчанию» (org.xnio.nio.WorkerThread).

Похоже на бесконечный цикл в ConduitStreamSinkChannel.write (..), но я не уверен в этом.

Проблема нерегулярна и не просто воспроизводится, и для ее остановки требуется перезапуск.

Каждый раз, когда он входит в это состояние, дамп потока становится одинаковым:

"default I/O-2" #103 prio=5 os_prio=0 tid=0x00007fd0f83a4800 nid=0x6941 runnable [0x00007fd0e9be0000]
   java.lang.Thread.State: RUNNABLE
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.fillInStackTrace(Throwable.java:783)
- locked <0x00000007a2be6ec0> (a java.nio.channels.ClosedChannelException)
at java.lang.Throwable.(Throwable.java:250)
at java.lang.Exception.(Exception.java:54)
at java.io.IOException.(IOException.java:47)
at java.nio.channels.ClosedChannelException.(ClosedChannelException.java:52)
at org.xnio.ssl.JsseStreamConduit.write(JsseStreamConduit.java:1022)
at org.xnio.conduits.ConduitStreamSinkChannel.write(ConduitStreamSinkChannel.java:150)
at org.xnio.http.HttpUpgrade$HttpUpgradeState$StringWriteListener.handleEvent(HttpUpgrade.java:385)
at org.xnio.http.HttpUpgrade$HttpUpgradeState$StringWriteListener.handleEvent(HttpUpgrade.java:372)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
at org.xnio.conduits.WriteReadyHandler$ChannelListenerHandler.writeReady(WriteReadyHandler.java:65)
at org.xnio.ssl.JsseStreamConduit.run(JsseStreamConduit.java:393)
at org.xnio.ssl.JsseStreamConduit.writeReady(JsseStreamConduit.java:524)
at org.xnio.ssl.JsseStreamConduit$1.writeReady(JsseStreamConduit.java:287)
at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:94)
at org.xnio.nio.WorkerThread.run(WorkerThread.java:567)

Изменение в топологии добавляет несколько групп серверов и меняет обратный прокси-сервер (nginx) для перенаправления (состояние 301) каждого http-соединения на https.

Анализ дампа потока, похоже, имеет отношение к https (пакет org.xnio.ssl. *), , но все, что находится за nginx, просто http.

Наше приложение предоставляет конечную точку Websocket (WSS через nginx) и выполняет множество удаленных вызовов EJB на другие серверы (удаленное взаимодействие по протоколу http, напрямую на другой сервер без прохождения через nginx).

Кроме того, приложение выполняет / принимает некоторые вызовы REST (RESTEasy) на другие серверы в кластере через балансировщик нагрузки (nginx https, чтобы избежать перенаправления 301)

Что может быть причиной этого?

спасибо!

...