Высокая загрузка ЦП с прокси-сервером Websocket с использованием Undertow - PullRequest
0 голосов
/ 22 февраля 2020

Я создал прокси-сервер с помощью библиотеки Java Undertow, которая перенаправляет соединения веб-сокетов пользователей на разные порты на одном компьютере.

Проблема в том, что при запуске только 200 или 300 подключений WebSockets запускается программа использовать огромное количество процессоров.

Я прикрепил JProfiler к приложению, и все потоки либо находятся в состоянии ожидания, либо в состоянии сетевого ввода-вывода.

Прокси-сервер запускается в следующем way:

 Undertow reverseProxy = Undertow.builder()
            .addHttpListener(80, "0.0.0.0")
            .addHttpsListener(443, "0.0.0.0", sslContext)
            .setIoThreads(4)
            .setHandler(new ProxyHandler(reverseProxyServer, encodingHandler))
            .build();
    reverseProxy.start();

Я думаю, что это может быть проблемой конфигурации, потому что я не думаю, что такое использование процессора нормально.

Скриншот темы (желтый ждет, светло-синий net, зеленый работает)

Скриншот методов процессора

Верхний скриншот

РЕДАКТИРОВАТЬ: Я обнаружил, что Proxy CPU, который обычно использует около 30% загрузки процессора, достигает почти 100% в случайные периоды, в течение которых один из потоков ввода-вывода начинает выполнять много выполняемых действий, см. Скриншоты :

* 102 5 * Темы 100%

Методы

...