usar tiempo rapido por para mismo mas internet conexiones conectar como cables cable networking network-programming

networking - tiempo - el internet es mas rapido por cable o wifi



¿Cuántas conexiones de red puede soportar una computadora? (6)

Creo que no debe limitar la cantidad de conexiones que su servidor le permitirá, solo atrape y maneje adecuadamente cualquier excepción que pueda ocurrir al aceptar y cerrar las conexiones y usted debería estar bien. Deberías dejar ese tipo de programación de nivel inferior en las capas subyacentes del sistema operativo, de esa manera puedes transportar tu servidor más fácilmente, etc.

Al escribir un servidor personalizado, ¿cuáles son las mejores prácticas o técnicas para determinar la cantidad máxima de usuarios que pueden conectarse al servidor en un momento dado?

Asumiría que las capacidades del hardware de la computadora, la capacidad de la red y el protocolo del servidor serían factores importantes.

Además, ¿cree que es una buena práctica limitar el número de conexiones de red a un cierto número máximo de usuarios? ¿O debería el servidor no limitar el número de conexiones de red y dejar que el rendimiento se degrade hasta que el tiempo de respuesta sea extremadamente alto?


En general, los servidores modernos pueden manejar grandes cantidades de conexiones simultáneas. He trabajado en sistemas que tienen más de 8,000 sockets TCP / IP abiertos simultáneamente.

Necesitará una interfaz de servicio de alta calidad para manejar ese tipo de carga, consulte libevent o libev .


Esa es una buena pregunta y definitivamente es situacional. ¿Cuál es tu computadora? ¿Tiene una máquina de 4 zócalos llena de Quad Core Xeons, 128 GB de RAM y conectividad Fibre Channel (como el par de Dell R900 que acabamos de comprar)? ¿O está ejecutando un p3 550 con 256 MB de RAM y un módem de 56K? ¿Cuánta carga tiene cada conexión en su servidor? ¿Qué tipo de respuesta es aceptable?

Estas son las preguntas que necesita responder. Supongo que la mejor forma de encontrar la respuesta es a través de la prueba de carga. Cree una prueba unitaria de las rutas esperadas (y quizás algunas inesperadas) que su código realizará contra su servidor. Encuentre un marco de prueba de carga que le permita simular 10, 100, 1000, 10000 usuarios que realizan esas tareas al mismo tiempo.

Eso le dirá cuántas conexiones puede admitir su computadora.

Lo mejor del escenario de prueba de carga / unidad es que puede poner en tiempo de respuesta las expectativas en las pruebas de su unidad y aumentar la carga hasta que se quede fuera de su tiempo de respuesta. Si tiene un requisito de admitir X número de usuarios con una segunda respuesta Y, podrá demostrarlo con sus pruebas de carga.


Esto realmente depende de tu sistema operativo.

Diferentes sabores de Unix admitirán un número "ilimitado" de identificadores de archivos / sockets, otros tienen valores altos como 32768.

Un límite de usuario típico es 8192 pero generalmente se puede establecer más alto.

Creo que Windows es más limitante, pero la versión del servidor puede tener límites más altos.


Uno de los mayores reveses en las conexiones de concurrencia alta es en realidad los enrutadores involucrados. Los enrutadores orientados al usuario doméstico generalmente tienen una pequeña tabla NAT, lo que impide que el enrutador realmente atienda las conexiones del servidor.

Asegúrese de investigar también la configuración de su enrutador / infraestructura de red.


Dan Kegel reunió un resumen de técnicas para manejar grandes cantidades de conexiones de red desde un solo servidor, aquí: http://www.kegel.com/c10k.html