websockets socket nodejs javascript html5 web-applications websocket

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:

  1. ¿Qué limita la cantidad de posibles websockets por sesión de navegación ? ¿Es el cliente? ¿El servidor? ¿O una combinación de ambos?
  2. ¿Se aplican las mismas limitaciones a las conexiones ws: y wss: :?

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

[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

Más sobre alta concurrencia: http://www.kegel.com/c10k.html