nodejs - websockets javascript
HTML5 websockets: ¿número máximo de conexiones abiertas? (2)
En Gecko 7 introdujeron el aprameter network.websocket.max-connections
, puede configurarlo en about:config
. Está configurando las conexiones máximas de websocket "a la vez" de acuerdo con esto: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
No sé si puede determinar este número a partir del código y si hay alguna forma de determinar cuántos están abiertos en otras sesiones (entonces cuántos quedan).
Los websockets HTML5 son (y han sido por algún tiempo ) un tema candente, ya que permiten el empuje del servidor en tiempo real .
Actualmente tengo una aplicación que funciona con websockets de Tomcat 7.0.30 que incluye soporte websocket . Pero mover esto a un entorno de producción plantea preguntas.
Principalmente, me gustaría saber el número máximo posible de conexiones que pueden operar (estar abiertas ) simultáneamente por sesión de navegación ; una sesión de navegación implica una sola pestaña o ventana del navegador.
¿Las conexiones abiertas de websocket suman la cantidad máxima de conexiones que el servidor web puede procesar simultáneamente? Por ejemplo, MaxClients
en Apache.
A la inversa, ¿el número máximo de websockets para una única sesión de navegación está limitado por el propio navegador? Como se muestra en esta publicación del blog , hasta abril de 2012, los diferentes navegadores admiten cantidades variables de conexiones websocket abiertas . (Personalmente apuntaría a 1 websocket abierto por sesión de navegación ; pero esta información sería bueno saber).
TL / DR:
- ¿Qué limita la cantidad de posibles websockets por sesión de navegación ? ¿Es el cliente? ¿El servidor? ¿O una combinación de ambos?
- ¿Se aplican las mismas limitaciones a las conexiones
ws:
ywss:
:?
No hay una especificación estándar del valor predeterminado de conexiones máximas para los navegadores. Depende de la implementación [0]. Además, el uso de más de un socket web por sesión de navegación para la misma aplicación parece excesivo, ya que puede utilizar canales de publicación / sub.
El cuello de botella para las conexiones generalmente está en el lado del servidor. Web-socket es una actualización a HTTP por lo que las conexiones son "solo" conexiones HTTP (TCP) actualizadas [1] .HTTPS y WSS agregan solo una capa de seguridad a la conexión normal. No son una conexión diferente [2]. En su caso, compruebe maxConnections (y maxThreads ) [3] y los máximos de su sistema operativo [4] [5]. Si sus conexiones concurrentes llegan a decenas de miles, tal vez debería comenzar a pensar en el balanceo de carga o la agrupación [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
[6] http://tomcat.apache.org/tomcat-7.0-doc/config/cluster.html
Más sobre alta concurrencia: http://www.kegel.com/c10k.html