Подтвердить что ты не робот

Веб-узлы HTML5: максимальное количество открытых соединений?

Веб-узлы HTML5 (и были в течение некоторого времени) - горячая тема, поскольку они элегантно позволяют в режиме реального времени на стороне сервера.

В настоящее время у меня есть рабочее приложение с веб-серверами, основанное на Tomcat 7.0.30, которое включает поддержку веб-обозревателя. Но переход к производственной среде вызывает вопросы.

В основном я хотел бы узнать о возможном максимальном количестве подключений, которые могут работать (быть открытыми) одновременно в сеансе просмотра; сеанс просмотра подразумевает одну вкладку браузера или окно.

Разве открытые подключения к веб-узлу составляют максимальное количество подключений, которые могут одновременно обрабатываться веб-сервером? Например. MaxClients в Apache.

И наоборот, максимальное количество веб-сайтов для одного сеанса просмотра ограничено самим браузером? Поскольку этот сообщение в блоге показывает, что до апреля 2012 года различные браузеры поддерживают разное количество открытых подключений к сети. (Я лично хотел бы открыть 1 открытый websocket на сеанс просмотра, но эта информация все равно будет полезной).

TL/DR:

  • Что ограничивает количество возможных веб-сайтов в сеансе просмотра? Это клиент? Сервер? Или сочетание обоих?
  • Используются ли те же ограничения (ограничения) для соединений ws: и wss:?
4b9b3361

Ответ 1

Стандартная спецификация значений по умолчанию для max-соединений для браузеров отсутствует. Это зависит от реализации [0]. Кроме того, использование более чем веб-сокета на сеанс просмотра для одного и того же приложения кажется излишним, поскольку вы можете использовать паб/субканалы.

Узкое место для подключения обычно находится на стороне сервера. Веб-сокет - это обновление до HTTP, поэтому соединения - это "просто" обновленные HTTP-соединения (TCP). [1].HTTPS и WSS добавляют только уровень безопасности к нормальному соединению. Они не являются другим соединением [2]. В вашем случае проверьте maxConnections (и maxThreads) [3] и максимальную производительность вашей операционной системы [4] [5]. Если ваши параллельные соединения достигают десятков тысяч, возможно, вам стоит подумать о балансировке нагрузки или кластеризации [6].

[0] https://code.google.com/p/chromium/issues/detail?id=85323

[1] http://en.wikipedia.org/wiki/WebSocket

[2] http://en.wikipedia.org/wiki/HTTP_Secure

[3] http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

[4] https://serverfault.com/questions/10852/what-limits-the-maximum-number-of-connections-on-a-linux-server

[5] https://superuser.com/questions/251596/is-there-a-hard-limit-of-65536-open-tcp-connections-per-ip-address-on-linux

[6] http://tomcat.apache.org/tomcat-7.0-doc/config/cluster.html

Подробнее о высоком concurrency: http://www.kegel.com/c10k.html

Ответ 2

В Gecko 7 они ввели aprameter network.websocket.max-connections, вы можете установить его в about:config. Он устанавливает максимальные соединения с веб-разъемом "за раз" в соответствии с этим: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

Я не знаю, можете ли вы определить этот номер из кода и если есть какой-либо способ определить, сколько из них открыто в других сеансах (так, сколько у вас осталось).