Я создал прокси-сервер с помощью библиотеки 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% Методы