El problema C10k consistía en optimizar las pilas de redes informáticas para gestionar un gran número de clientes simultáneamente. [ 1 ] El nombre C10k es un numerónimo que significa gestionar simultáneamente diez mil conexiones. [ 2 ] Gestionar muchas conexiones simultáneas es un problema distinto al de gestionar muchas solicitudes por segundo : este último requiere un alto rendimiento (procesarlas rápidamente), mientras que el primero no necesita ser rápido, pero sí requiere una programación eficiente de las conexiones a los sockets de red u otros puntos finales con estado . En 2025, el problema ya se había resuelto, y el número de conexiones posibles a un solo ordenador se contaba por millones.
El problema de la optimización de servidores de sockets se ha estudiado debido a que se deben considerar varios factores para que un servidor web pueda soportar muchos clientes. Esto puede implicar una combinación de restricciones del sistema operativo y limitaciones del software del servidor web. Según el alcance de los servicios que se ofrecerán y las capacidades del sistema operativo, así como consideraciones de hardware como las capacidades de multiprocesamiento, se puede preferir un modelo de subprocesos múltiples o uno de subprocesos simples . Paralelamente a este aspecto, que implica consideraciones sobre la gestión de memoria (generalmente relacionada con el sistema operativo), las estrategias implicadas se relacionan con los diversos aspectos de la gestión de E/S. [ 2 ]
Historia
El término C10k fue acuñado en 1999 por el ingeniero de software Dan Kegel, [ 3 ] [ 4 ] citando al host FTP de Simtel , cdrom.com , que atendía a 10 000 clientes a la vez a través de Ethernet de 1 gigabit por segundo en ese año. [ 1 ] Desde entonces, el término se ha utilizado para referirse al problema general de un gran número de clientes, con numerónimos similares para un mayor número de conexiones, más recientemente "C10M" en la década de 2010 para referirse a 10 millones de conexiones concurrentes. [ 5 ]
A principios de la década de 2010, se hizo posible gestionar millones de conexiones en un único servidor estándar de montaje en rack de 1U. Algunos ejemplos son WhatsApp, que gestiona más de 2 millones de conexiones (con 24 núcleos usando Erlang en FreeBSD ), [ 6 ] [ 7 ] y MigratoryData, que gestiona entre 10 y 12 millones de conexiones (con 12 núcleos, usando Java en Linux ). [ 5 ] [ 8 ]
Las aplicaciones comunes de un número muy elevado de conexiones incluyen servidores públicos generales que deben atender a miles o incluso millones de usuarios a la vez, como servidores de archivos , servidores FTP , servidores proxy , servidores web y balanceadores de carga . [ 9 ] [ 5 ]
Véase también
Referencias
- 1 2 "El problema C10K" . Archivado del original el 22 de julio de 2013.
- 1 2 Liu, D.; Deters, R. (2009). "El problema inverso de C10K para mashups del lado del servidor". Computación orientada a servicios: talleres ICSOC 2008. Lecture Notes in Computer Science. Vol. 5472. p. 166. doi : 10.1007/978-3-642-01247-1_16 . ISBN 978-3-642-01246-4.
- ↑ Andrew Alexeev (2012). "§14. nginx; §14.1. ¿Por qué es importante la alta concurrencia?" . En Amy Brown; Greg Wilson (eds.). La arquitectura de las aplicaciones de código abierto, volumen II: estructura, escala y algunos trucos más intrépidos . Lulu.com . ISBN 9781105571817Hace unos diez años ,
Daniel Kegel, un destacado ingeniero de software, … El manifiesto C10K de Kegel … resolviendo el problema C10K de 10.000 conexiones simultáneas, nginx …
- ↑ Kegel, Dan (8 de mayo de 1999). "El problema C10K" . Kegel.com . Archivado del original el 8 de mayo de 1999. Recuperado el 18 de junio de 2019.
Y las computadoras también son grandes. Puedes comprar una máquina de 500 MHz con 1 gigabyte de RAM y seis tarjetas Ethernet de 100 Mbit/s por unos 3000 dólares. Veamos: con 10000 clientes, eso son 50 kHz, 100 Kbytes y 60 Kbit/s por cliente. No debería requerir más potencia que eso para tomar cuatro kilobytes del disco y enviarlos a la red una vez por segundo para cada uno de los diez mil clientes. (Eso equivale a 0,30 dólares por cliente, por cierto. ¡Esas tarifas de licencia de 100 dólares por cliente que cobran algunos sistemas operativos empiezan a parecer un poco altas!) Así que el hardware ya no es el cuello de botella.
- 1 2 3 Mihai Rotaru (2015-05-20). "Cómo MigratoryData resolvió el problema C10M: 10 millones de conexiones concurrentes en un único servidor comercial" . migratorydata.com . Recuperado el 15 de octubre de 2021 .
- ↑ "1 millón es tan de 2011" . Blog de WhatsApp . 6 de enero de 2012. Archivado del original el 1 de mayo de 2014. Recuperado el 25 de julio de 2019.
Esta vez también queríamos compartir con ustedes algunos detalles técnicos adicionales sobre hardware, sistema operativo y software: hw.machine: amd64 hw.model: Intel(R) Xeon(R) CPU X5675 a 3,07 GHz hw.ncpu: 24 hw.physmem: 103062118400 hw.usermem: 100556451840
- ↑ Reed, Rick (30 de marzo de 2012). "Escalando a millones de conexiones simultáneas" (PDF) . Erlang Factory . pág. 7. Archivado del original (PDF) el 9 de julio de 2012. Recuperado el 25 de julio de 2019 .
- ↑ Mihai Rotaru (10 de octubre de 2013). "Escalando a 12 millones de conexiones simultáneas: cómo lo hizo MigratoryData" . migratorydata.com . Consultado el 15 de octubre de 2021 .
- ^ Ponnuswamy Sadayappan; Manish Parashar; Ramamurthy Badrinath; Viktor K. Prasanna (2008). Computación de alto rendimiento - HiPC 2008 . Saltador. ISBN 978-3-540-89893-1. Consultado el 15 de octubre de 2021 .
- Software de servidor web
- Rendimiento informático