Websocket позволяет только 200 подключений

Вопрос: Я просто реализовал простую систему Websocket на моем сервере. Я пытаюсь проверить максимальное количество подключений, я сделал следующий код: Javascript: for(var i=0; i<300; i++){ websocket(); } function websocket() { var wsUri = "ws://" + document.location.host + document.location.pathname + "websocket"; var ws = new WebSocket(wsUri); ws.onopen = function () { ws.send("User connected"); }; ws.onmessage =

Вопрос:

Я просто реализовал простую систему Websocket на моем сервере. Я пытаюсь проверить максимальное количество подключений, я сделал следующий код:

Javascript:

for(var i=0; i<300; i++){ websocket(); } function websocket() { var wsUri = «ws://» + document.location.host + document.location.pathname + «websocket»; var ws = new WebSocket(wsUri); ws.onopen = function () { ws.send(«User connected»); }; ws.onmessage = function (e) { writeToPage(e.data); }; ws.onclose = function () { writeToPage(«User disconnected»); }; }

Каждый раз, когда я запускаю его, первые 200 пользователей подключаются, после этого все запросы имеют свой onclose(). В веб-консоли я получаю следующие ошибки:

Mozilla: подключение к ws://localhost: 8080/MyApp/websocket было прервано во время загрузки страницы

Chrome: ошибка во время рукопожатия WebSocket: значение заголовка “Connection” не “обновлено”: обновить закрыть

Мое веб-приложение развернуто на Tomcat 7.0.52. Я прочитал, что по умолчанию он разрешает только 200 потоков, поэтому я добавил maxThreads=»1000″ в conf/server.xml как для Connector и для Executor но результат тот же.

в web.xml Я добавил:

<context-param> <param-name>org.apache.tomcat.websocket.executorMaxSize</param-name> <param-value>1000</param-value> </context-param>

Я попытался открыть 300 веб-сайтов с помощью ws://echo.websocket.org, и снова работало всего 200.

Это максимальное количество подключений, которое позволяет мой сервер? Является ли это максимальным количеством веб-ящиков, которые я могу создать как клиент? Является ли это хорошим способом тестирования большой нагрузки? Как увеличить число?

Лучший ответ:

После многих исследований выяснилось, что maxThreads=»1000″ фактически решила проблему, однако Mozilla допускает только 200 сокетов. Поэтому мне пришлось снова протестировать несколько клиентских машин.

Максимальное количество подключений веб-рассылки по умолчанию, разрешенное в FireFox, равно 200. Источник: https://developer.mozilla.org/en/docs/WebSockets#Gecko_7.0

Ответ №1

Ограничение по умолчанию в Tomcat 7. Попробуйте установить свойство org.apache.tomcat.websocket.executorMaxSize. См. Http://tomcat.apache.org/tomcat-7.0-doc/web-socket-howto.html#Tomcat_WebSocket_specific_configuration.

Ответ №2

Мы получили эту ошибку между сервисом WCF и веб-сокетом. Он просто принимает 200 подключений. Затем наша команда добавила конфигурационный файл в эту настройку.

<serviceThrottling maxConcurrentCalls=»1000″ maxConcurrentSessions=»1000″ maxConcurrentInstances=»1000″ />

https://www.c-sharpcorner.com/blogs/throttling-in-wcf https://www.codeproject.com/Articles/33362/WCF-Throttling

Оцените статью
Добавить комментарий