El problema de C10k es el problema de optimizar los sockets de red para manejar una gran cantidad de clientes al mismo tiempo. [1] El nombre C10k es un numerónimo para manejar simultáneamente diez mil conexiones. [2] Tenga en cuenta que las conexiones simultáneas no son lo mismo que las solicitudes por segundo, aunque son similares: manejar muchas solicitudes por segundo requiere un alto rendimiento (procesarlas rápidamente), mientras que una gran cantidad de conexiones simultáneas requiere una programación eficiente de las conexiones. En otras palabras, manejar muchas solicitudes por segundo tiene que ver con la velocidad de manejo de solicitudes, mientras que un sistema capaz de manejar una gran cantidad de conexiones concurrentes no necesariamente tiene que ser un sistema rápido, solo uno donde cada solicitud devolverá una respuesta de manera determinista. dentro de un período de tiempo finito (no necesariamente fijo).
El problema de la optimización del servidor de socket se ha estudiado porque se deben considerar varios factores para permitir que un servidor web admita muchos clientes. Esto puede implicar una combinación de restricciones del sistema operativo y limitaciones del software del servidor web. De acuerdo con el alcance de los servicios que se pondrán a disposición y las capacidades del sistema operativo, así como las consideraciones de hardware como las capacidades de multiproceso, se puede preferir un modelo de múltiples subprocesos o un modelo de subprocesos únicos . Paralelamente a este aspecto, que involucra consideraciones sobre la gestión de la memoria (generalmente relacionada con el sistema operativo), las estrategias implicadas se relacionan con los muy diversos aspectos de la gestión de E / S. [2]
Historia
El término fue acuñado en 1999 por Dan Kegel , [3] [4] citando al servidor FTP de Simtel , cdrom.com , que atiende a 10,000 clientes a la vez a más de 1 gigabit por segundo Ethernet en ese año. [1] Desde entonces, el término se ha utilizado para el 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. [5]
A principios de la década de 2010, se hicieron posibles millones de conexiones en un único servidor básico de montaje en rack de 1U: más de 2 millones de conexiones ( WhatsApp , 24 núcleos, utilizando Erlang en FreeBSD ), [6] [7] 10-12 millones de conexiones (MigratoryData, 12 núcleos, usando Java en Linux ). [5] [8]
Las aplicaciones comunes de un número muy alto de conexiones incluyen servidores pub / sub, chat, servidores de archivos, servidores web y redes definidas por software. [ cita requerida ]
Ver también
Referencias
- ^ a b "El problema C10K" . Archivado desde el original el 18 de julio de 2013.
- ^ a b Liu, D .; Deters, R. (2009). "El problema de C10K inverso para Mashups del lado del servidor". Computación Orientada a Servicios - Talleres ICSOC 2008 . Apuntes de conferencias en informática. 5472 . pag. 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 9781105571817.
Hace unos diez años, Daniel Kegel, un destacado ingeniero de software,… el manifiesto C10K de Kegel… resolvió el problema de C10K de 10.000 conexiones simultáneas, nginx …
- ^ Kegel, Dan (8 de mayo de 1999). "El problema C10K" . Kegel com . Archivado desde el original el 8 de mayo de 1999 . Consultado el 18 de junio de 2019 .
Y las computadoras también son grandes. Puede comprar una máquina de 500MHz con 1 gigabyte de RAM y seis tarjetas Ethernet de 100Mbit / seg por $ 3000 aproximadamente. Veamos: en 10000 clientes, eso es 50 KHz, 100 Kbytes y 60 Kbits / seg por cliente. No debería necesitar más potencia que esa para tomar cuatro kilobytes del disco y enviarlos a la red una vez por segundo por cada diez mil clientes. (Por cierto, eso equivale a 0,30 dólares por cliente. ¡Esas tarifas de licencia de 100 dólares por cliente que cobran algunos sistemas operativos están empezando a parecer un poco pesadas!) De modo que el hardware ya no es el cuello de botella.
- ^ a b Cómo MigratoryData resolvió el problema de C10M: 10 millones de conexiones simultáneas en un solo servidor de productos básicos
- ^ "1 millón es tan 2011" . Blog de WhatsApp . 6 de enero de 2012. Archivado desde el original el 1 de mayo de 2014 . Consultado el 25 de julio de 2019 .
Esta vez también queríamos compartir con usted algunos detalles técnicos sobre hardware, sistema operativo y software: hw.machine: amd64 hw.model: Intel (R) Xeon (R) CPU X5675 @ 3.07GHz hw.ncpu: 24 hw.physmem : 103062118400 hw.memoria de usuario: 100556451840
- ^ Reed, Rick (30 de marzo de 2012). "Escalado a millones de conexiones simultáneas" (PDF) . Fábrica de Erlang . pag. 7. Archivado desde el original (pdf) el 9 de julio de 2012 . Consultado el 25 de julio de 2019 .
- ^ Escalando a 12 millones de conexiones simultáneas: cómo lo hizo MigratoryData