Вопрос:
Я просто реализовал простую систему 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