stringtranslate.com

Problema C10k

El problema 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] Manejar muchas conexiones simultáneas es un problema diferente de manejar muchas solicitudes por segundo : este último requiere un alto rendimiento (procesarlas rápidamente), mientras que el primero no tiene que ser rápido, pero requiere una programación eficiente de las conexiones.

El problema de la optimización de servidores de sockets se ha estudiado porque se deben tener en cuenta 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. Según el alcance de los servicios que se van a ofrecer y las capacidades del sistema operativo, así como las consideraciones de hardware, como las capacidades de multiprocesamiento, se puede preferir un modelo de subprocesos múltiples o un modelo de subproceso único . Al mismo tiempo que este aspecto, que implica consideraciones sobre la gestión de memoria (normalmente 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 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 el problema general de una gran cantidad de clientes, con numerónimos similares para una mayor cantidad de conexiones, el más reciente "C10M" en la década de 2010 para referirse a 10 millones de conexiones simultáneas. [5]

A principios de la década de 2010, se hicieron posibles millones de conexiones en un único servidor de montaje en rack 1U: más de 2 millones de conexiones ( WhatsApp , 24 núcleos, utilizando Erlang en FreeBSD ) [6] [7] y entre 10 y 12 millones de conexiones (MigratoryData, 12 núcleos, utilizando Java en Linux ). [5] [8]

Las aplicaciones comunes de un número muy elevado de conexiones incluyen servidores públicos generales que tienen que 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. ^ ab "El problema del C10K". Archivado desde el original el 22 de julio de 2013.
  2. ^ ab 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 clase en informática. Vol. 5472. pág. 166. doi :10.1007/978-3-642-01247-1_16. ISBN 978-3-642-01246-4.
  3. ^ 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, … Manifiesto C10K de Kegel… resolviendo el problema C10K de 10.000 conexiones simultáneas , nginx
  4. ^ 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. Puedes comprar una máquina de 500 MHz con 1 gigabyte de RAM y seis tarjetas Ethernet de 100 Mbit/seg por unos 3000 dólares. Veamos: con 10 000 clientes, eso es 50 KHz, 100 Kbytes y 60 Kbits/seg por cliente. No debería hacer falta más potencia que eso para sacar 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. ¡Esos honorarios de licencia de 100 dólares por cliente que cobran algunos sistemas operativos están empezando a parecer un poco elevados!) Así que el hardware ya no es el cuello de botella.
  5. ^ abc Mihai Rotaru (20 de mayo de 2015). "Cómo MigratoryData resolvió el problema C10M: 10 millones de conexiones simultáneas en un único servidor de productos básicos". migratorydata.com . Consultado el 15 de octubre de 2021 .
  6. ^ "1 millón es tan de 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 ustedes algunos detalles más técnicos sobre hardware, SO y software: hw.machine: amd64 hw.model: Intel(R) Xeon(R) CPU X5675 @ 3.07GHz hw.ncpu: 24 hw.physmem: 103062118400 hw.usermem: 100556451840
  7. ^ Reed, Rick (30 de marzo de 2012). «Escalamiento a millones de conexiones simultáneas» (PDF) . Erlang Factory . pág. 7. Archivado desde el original (PDF) el 9 de julio de 2012. Consultado el 25 de julio de 2019 .
  8. ^ Mihai Rotaru (10 de octubre de 2013). "Escalamiento a 12 millones de conexiones simultáneas: cómo lo hizo MigratoryData". migratorydata.com . Consultado el 15 de octubre de 2021 .
  9. ^ Ponnuswamy Sadayappan; Manish Parashar; Ramamurthy Badrinath; Viktor K. Prasanna (2008). Computación de alto rendimiento - HiPC 2008. Springer. ISBN 978-3-540-89893-1. Recuperado el 15 de octubre de 2021 .