Pregunta ¿Tener un equilibrador de carga le permite reutilizar las conexiones de socket?


Tengo un servicio donde los servidores cargan archivos xml de 20kb a mi servidor.

No hay sesión, es una única solicitud POST y eso es todo. Cada solicitud individual se autentica en función del contenido del archivo xml.

Hay ajustes relacionados con los sockets que tendré que hacer, ya que durante la prueba de carga el servidor agota su grupo de sockets (32K).

De todos modos, me preguntaba qué cosas podrían cambiar cuando incorpore un equilibrador de carga en la ecuación que redondearía las solicitudes de robin entre 2 o más servidores web.

¿Podría el equilibrador de carga reutilizar sockets?

Una vez más, solo quiero dejarlo en claro, los servidores cliente están publicando un archivo en mi servidor, una vez que el archivo ha sido publicado en http, se completó al 100%. Cualquier publicación http posterior se considerará una nueva 'transacción'.


6
2018-04-27 20:52


origen


¿No tendría todavía un problema con el servidor de servicios de fondo que se queda sin sockets, independientemente de cómo lo maneje el equilibrador de carga? De la forma en que lo veo, tendrás más de 2 veces el número de sockets disponibles, pero el número sigue siendo finito. Desde donde estoy sentado, parece que necesitas resolver esto en los servidores de servicios de fondo. - John Gardeniers


Respuestas:


Supongo que se refiere a SO_REUSEADDR en lugar de a la multiplexación de conexión. El único beneficio que esto proporciona es que un socket en TIME_WAIT no impide que un nuevo socket se una a la misma dirección. Nunca he encontrado un sistema que realmente use la fase TIME_WAIT para lo que está destinado: si tiene muchos sockets en TIME_WAIT, tal vez debería reducir el tiempo de espera.

Hacer que todo vaya más rápido también ayudaría, pero no ha dado mucha información sobre la configuración aquí y el patrón de tráfico.

Cualquier tipo de equilibrador de carga de proxy le dará incluso menos conexiones de clien que las que tiene ahora (ya que cada conexión entrante requiere una conexión a los dispositivos de back-end). OTOH RRDNS reducirá la carga a la mitad sin la complejidad y el costo de una SPOF.

es una única solicitud POST

¿Entonces estamos hablando de HTTP aquí? Si es así, entonces hay ENORMES posibilidades de ajuste.


1
2018-04-27 23:42





Todos los balanceadores de carga líderes tienen una forma de reutilización de conexión y agrupación, simplemente lo llaman algo diferente. En última instancia, están diseñados para procesar paquetes de manera muy rápida y eficiente.

F5 lo llama OneConnect, multiplexado TCP de Netscaler ... ..No sé lo suficiente sobre los otros proveedores o soluciones de código abierto.

Esta función permite a los equilibradores de carga reutilizar las conexiones TCP en el lado del servidor y mejora en gran medida el rendimiento de la aplicación web en el back-end. Cuando una conexión se termina, por decirlo así, se mueve a un grupo de reutilización en el equilibrador de carga y se ajusta a una conexión posterior, si es adecuado (si no es adecuado, el equilibrador de carga abrirá una nueva conexión TCP con el servidor). No hay interrupción de la conexión y, por lo tanto, no es necesario realizar los posteriores acuerdos de tres vías en las nuevas conexiones o que el servidor asigne o elimine la memoria asignada a los sockets abiertos. La otra cosa a tener en cuenta es que las conexiones del lado del servidor son secuenciales, no es canalización.

Sin la reutilización de la conexión, es una correlación 1-1 (entre cliente y servidor) y, según mi experiencia, el rendimiento (de la aplicación) se reduce drásticamente con la carga en el servidor de servicios de fondo mucho más alto. Si se trata de tráfico SSL, verá un error de CPU debido a los intercambios de claves.


1
2018-05-10 14:54





Creo que dependerá del equilibrador de carga. Sé que F5 tiene una característica llamada OneConnect que permite al equilibrador de carga multiplexar múltiples solicitudes para abrir sockets. Esto reduce la sobrecarga de creación / eliminación de socket para cada transacción de protocolo de nivel superior.

Sé que otros balanceadores de carga tienen características similares, aunque no estoy tan familiarizado con ellos.


0
2018-04-27 23:40