¿Me pueden ayudar con mi planificación de capacidad?


132

Esta es una pregunta canónica sobre la planificación de la capacidad.

Relacionado:

Tengo una pregunta sobre la planificación de la capacidad. ¿Puede la comunidad de Fallas del servidor ayudar con lo siguiente:


  • ¿Qué tipo de servidor necesito para manejar algunos usuarios?
  • ¿Cuántos usuarios puede manejar un servidor con algunas especificaciones ?
  • ¿ Alguna configuración del servidor será lo suficientemente rápida para mi caso de uso ?
  • Estoy construyendo un sitio de redes sociales: ¿qué tipo de hardware necesito?
  • ¿Cuánto ancho de banda necesito para algún proyecto ?
  • ¿Cuánto ancho de banda usarán algunos usuarios en alguna aplicación ?

Respuestas:


97

La comunidad Server Fault generalmente no puede ayudarlo con la planificación de la capacidad: la mejor respuesta que podemos ofrecer es "Compare su código en un hardware similar al que usará en la producción, identifique los cuellos de botella y luego determine la carga de trabajo el hardware actual puede manejar, y / o cuántos caballos de fuerza de hardware necesita para manejar su carga de trabajo de destino " .


Hay varios factores en juego en la planificación de la capacidad que no podemos evaluar adecuadamente en un sitio de Preguntas y Respuestas:

  • Los requisitos de su código / software particular
  • Recursos externos (bases de datos, otro software / sitios / servidores)
  • Su carga de trabajo (pico, promedio, colas)
  • El valor comercial del desempeño (análisis de costo / beneficio)
  • Las expectativas de rendimiento de sus usuarios.
  • Cualquier acuerdo de nivel de servicio / obligaciones contractuales que pueda tener

Hacer un análisis adecuado de estos factores y otros está más allá del alcance de un sitio simple de preguntas y respuestas: requieren un conocimiento detallado sobre su entorno y requisitos que solo su equipo (o un consultor adecuadamente remunerado) puede reunir de manera eficiente.


Algunos axiomas de planificación de capacidad

  1. La RAM es barata
    Si espera que su aplicación use mucha RAM, debe poner tanta RAM como sea posible.
  2. El disco es barato
    Si espera usar mucho disco, debería comprar unidades grandes, muchas de ellas.
    El almacenamiento SAN / NAS es menos barato y, por lo general, también debe especificarse como grande en lugar de pequeño para evitar actualizaciones costosas más adelante.
  3. Las cargas de trabajo crecen con el tiempo
    Suponga que sus necesidades de recursos aumentarán.
    Tenga en cuenta que el aumento puede no ser simétrico (la CPU y la RAM pueden aumentar más rápido que el disco) y puede que no sea lineal.
  4. La electricidad es costosa
    Aunque la RAM y los discos han disminuido considerablemente en precio, el costo de la electricidad ha aumentado constantemente. Todos esos discos y RAM adicionales, sin mencionar la potencia de la CPU, aumentarán su factura de electricidad (o la factura que paga a su proveedor). Planificar en consecuencia.

1
¡Deberías dejarlo totalmente y usar la integración por partes!
Gilles

+1. Y la RAM, como sugiere en el axioma 1, es una de esas cosas que tiene enormes beneficios. Por ejemplo, aumenta su capacidad de utilizar mejor el almacenamiento en caché, lo que a su vez le permite realizar menos consultas en la base de datos, lo que a su vez aligera la carga en el disco y la CPU. A menudo me siento frustrado por los proveedores de alojamiento que ofrecen una CPU rápida con sus servidores y una cantidad mínima de RAM.
Steve Wortham

31
Añadiría a esto: la capacidad del disco es barata. El rendimiento del disco se vuelve costoso. Especialmente porque vemos un crecimiento en el tamaño de los discos de más de 10 años, pero las leyes de la física no han cambiado. La regla general que uso (a partir de hoy; junio de 2014) es para un rendimiento óptimo: 75 IOP por husillo en SATA, 200 IOP por husillo en FC y 1500 IOP por SSD. Las unidades SATA grandes ofrecen relaciones de IO por gigabyte realmente bastante pobres.
Sobrique

A mediados de 2019, ya nadie debería comprar unidades de husillo.
Robert Harvey

@RobertHarvey ya nadie debería comprar unidades de husillo SAS . Obtener capacidad para los servidores de escala petabox todavía requiere obtener muchas unidades SATA o terminar pagando mucho.
Mikko Rantalainen

44

Planificación de recuento de máquinas virtuales

Cuando se trata de averiguar cuántas máquinas virtuales debe planificar en un solo host, en realidad no hay reglas generales realmente buenas. De hecho, solo hay uno, y solo es bueno:

Los recuentos de máquinas virtuales generalmente están limitados por RAM, excepto cuando no lo están.

Lo cual no es terriblemente útil. Si esas máquinas virtuales van a ejecutar aplicaciones con poca CPU, entonces su limitador se basará en la RAM. Cada plataforma VM tiene sus propias capacidades para suscribir en exceso la RAM, por lo que no es tan fácil como TOTAL_RAM / Per-VM-RAM = MachineCount, pero ese número es un buen elemento de planificación.

Pero, ¿qué sucede si sus máquinas virtuales están haciendo otras cosas además de la escasez de paquetes con poca CPU?


Los recuentos de máquinas virtuales están limitados por siete recursos discretos disponibles para la máquina host:

  • Hypervisor VMware, Xen, HyperV, KVM, lo que sea. Cada uno tiene sus propias características de impacto de conteo. Algunos son muy buenos en la deduplicación de páginas de memoria, otros no tanto. Algunos no permiten la suscripción excesiva de la capacidad de la CPU, otros sí.
  • Velocidad del núcleo de la CPU Esto limita el rendimiento máximo de un solo subproceso que una VM podrá ejecutar. 36 núcleos de una CPU de 1.8 GHz pueden ser 64.8 GHz de CPU en un host, pero ningún hilo único funcionará más rápido que 1.8 GHz.
  • CPU Core Count Esto, con velocidad de núcleo, describe el techo del rendimiento máximo de CPU que puede experimentar.
  • RAM del sistema Como se describió anteriormente, esto limita la cantidad de máquinas virtuales que puede ejecutar. Ciertos hipervisores son mejores que otros en cosas como la deduplicación de páginas de memoria, por lo que si está ejecutando 100 máquinas virtuales idénticas, puede empaquetar mucho más en estos sistemas de deduplicación que si estuviera ejecutando 100 máquinas virtuales completamente diferentes.
  • Tamaño del disco Cada imagen del sistema operativo ocupa una cierta cantidad de espacio. Necesita suficiente espacio para almacenarlo todo. Por lo tanto, el tamaño del disco pone un límite superior en la cantidad de máquinas virtuales que puede alojar.
  • Ancho de banda de E / S El disco subyacente a las máquinas virtuales tiene un máximo de cuántas E / S por segundo puede manejar. Si le arrojas demasiado, los sistemas se estancarán esperando que se complete la E / S. Esto pone un límite superior en la cantidad de máquinas virtuales que consumen E / S que puede ejecutar.
  • Ancho de banda de red Para las máquinas virtuales que usan redes, el ancho de banda de red disponible pondrá un límite a la cantidad de máquinas virtuales que puede ejecutar en un host determinado.

Todo esto puede ser lo que te hace tropezar, todo depende de lo que estés haciendo con tus máquinas virtuales. Algunas cosas para recordar:

  • No existe un sistema genérico.
  • No existe tal cosa como un servidor web genérico , ya que el código de la aplicación puede ejecutarse desde el estilo CDN de apenas movimiento de aguja hasta grandes y profundos elementos como la transcodificación de video.
  • No existe un servidor de base de datos genérico . Estos pueden ejecutarse desde sistemas pequeños utilizados solo para el seguimiento del estado de la sesión, hasta sistemas muy grandes.

Para determinar cuántas máquinas virtuales puede empaquetar en un sistema host, necesita saber cómo funcionan sus sistemas y qué requieren para funcionar bien. Una vez que sepa eso, puede hacer la planificación del conteo. ¡Y mejor aún, descubra cuán fornido necesita hacer sus sistemas host!


sobre todo, use sistemas basados ​​en VM en dos servidores físicos separados con VM no vinculados. Esto permite fallas de hardware sin pérdida de todo el sistema. Las máquinas virtuales pueden moverse entre servidores idénticos sin pérdida de datos. solo las sesiones se pierden y luego se reconstruyen. personalmente, externalizaría a una empresa de alojamiento que ofrezca estos servicios (google o amazon). son caros, pero mucho menos que tener uno propio.
Random-IT

2
Lo que he visto más pequeño en las implementaciones de VM es la E / S de disco. La mayoría de las personas entiende el espacio en disco, la velocidad de la CPU y la memoria. Se olvidan del rendimiento de ese disco.
Dan Pritts

6

Asegúrate de hacer la pregunta correcta.

  • Las computadoras son baratas
  • Las necesidades futuras son muy difíciles de predecir
  • Planifique cómo escalar, no qué comprar con anticipación

Si no sabe lo que necesitará, eso significa que no necesita mucho. Si tiene un sitio web activo, probablemente también tenga un equipo de operaciones que sepa cuánto ram, disco, io, red, etc. necesita su aplicación. Si estás en la etapa de soñar, debes comenzar con tu escritorio y avanzar hacia arriba.

Asegúrese de tener alguna idea de cómo va a escalar cuando las cosas se agranden. ¿Puedes agregar más servidores detrás del equilibrador de carga? ¿Puedes fragmentar el servidor redis?

Además, tener su propio centro de datos es una mierda. Un centro de datos (incluso si es solo una computadora) es una distracción de su propósito real. No puede simplemente comprar una computadora, encenderla y alejarse. Necesita aire acondicionado, filtración de aire, energía confiable, Internet confiable, copias de seguridad, repuestos, espacio físico para crecer, capacidad de energía para crecer, cables de alimentación que no se tropiezan y un montón de otros dolores de cabeza.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.