Existen límites impuestos por la memoria disponible, el ancho de banda, la CPU y, por supuesto, la conectividad de la red. Pero a menudo se pueden escalar verticalmente. ¿Hay algún otro factor limitante en Linux? ¿Pueden superarse sin modificaciones al kernel? Sospecho que, si nada más, el factor limitante se convertiría en el gigabit ethernet. Pero para protocolos eficientes, podría tomar 50K conexiones simultáneas para pantanar eso. ¿Se rompería algo más antes de que pudiera llegar tan alto?¿Cuántas conexiones abiertas udp o tcp/ip puede tener una máquina Linux?
Estoy pensando que quiero un udp de software y/o balanceador de carga tcp/ip. Lamentablemente, no parece existir nada parecido en la comunidad de código abierto, a excepción del protocolo http. Pero no está más allá de mis capacidades escribir uno usando epoll. Espero que se someta a muchos ajustes para escalar, pero ese es un trabajo que se puede hacer de forma incremental, y yo sería un mejor programador para ello.
usted plantea un buen punto sobre jitter y latencia y el efecto sobre el tráfico inelástica – Eloff
haría la persona que rechazó mi post cuidado para explicar? el voto negativo sin comentarios es simplemente grosero. – jldupont
Para TCP, la otra preocupación es la cantidad de datos entrantes. Los datos entrantes ocupan los búferes del kernel hasta que sean procesados por un proceso de usuario. Si su aplicación no procesa la memoria "lo suficientemente rápido", entonces el kernel puede quedarse sin búferes y entrar en pánico. Esto se puede mejorar estableciendo un tamaño de búfer Rx pequeño en cada zócalo. –