Cómo lograr millones de conexiones TCP simultáneas en una sola máquina
Al principio no podía entender cómo una sola máquina podía lograr millones de conexiones simultáneas, porque la cantidad de puertos disponibles en el sistema era solo: 65535 - 1024 = 64511. Cada conexión TCP necesita ocupar un Puerto independiente, que solo puede lograr más de 6W de conexiones simultáneas. Sin embargo, pasé por alto un problema muy básico. Los números de puerto no se pueden repetir bajo la misma IP, pero podemos vincular varias direcciones IP a una tarjeta de red. Si una sola máquina quiere iniciar activamente 1 millón de conexiones simultáneas, debemos usar al menos. 17 direcciones IP.
Después de que el servidor TCP escucha las conexiones del cliente en el puerto especificado, crea un nuevo socket para leer y escribir datos con el cliente, pero el socket no necesita ni estará vinculado a un nuevo puerto. Por lo tanto, para el servidor TCP, no hay escasez de puertos. La cantidad de conexiones simultáneas que puede mantener el servidor TCP depende del rendimiento del servidor, el tamaño de la memoria, el ancho de banda y la configuración del lado del servidor (por ejemplo: la cantidad de archivos que procesa. se puede abrir, etc.). Tomando como ejemplo la cantidad de conexiones de 100 W, el tamaño total de memoria requerido es aproximadamente: 1,000,000 20K = 20G. El ancho de banda requerido para transmitir un mensaje de 1 KB es: 1,000,000 1K = 1000M, y se requieren 1,000,000 descriptores de archivos abiertos.
Para la prueba de esfuerzo del número de conexión del servidor TCP, el cuello de botella está en el cliente, porque cada cliente necesita usar un puerto local para conectarse al servidor TCP, y para una dirección IP, el rango de puertos es: 0-65536, algunos de los cuales son utilizados por el sistema u otros programas. Por lo tanto, el número máximo teórico de conexiones al servidor TCP iniciadas desde una única IP de un host es 65535. Por supuesto, podemos vincular N direcciones IP al host e iniciar conexiones desde múltiples IP al mismo tiempo, por lo que, en teoría, el cliente puede iniciar El número de conexiones es: número IP * 65535. En este momento, la CPU, la memoria, el ancho de banda y los recursos de manejo de archivos del cliente son el límite.