125 votos

¿Cómo hacer pruebas de carga y la capacidad de diseño de sitios web?

Este es un canónica pregunta acerca de la capacidad de diseño de sitios web.

Relacionado con:

¿Cuáles son algunas de las herramientas recomendadas y métodos de la planificación de la capacidad para sitios web y aplicaciones web?

Por favor, siéntase libre para describir las diferentes herramientas y técnicas para los diferentes servidores web, frameworks, etc., así como las mejores prácticas que se aplican a los servidores web en general.

132voto

Shlomi Fish Puntos 1951

La respuesta corta es: Nadie puede responder a esta pregunta, excepto usted.

La respuesta larga es que la evaluación comparativa de su carga de trabajo específica es algo que usted necesita para llevar a cabo usted mismo, porque es un poco como preguntar "¿cuánto tiempo es un pedazo de cuerda?".

Un sencillo de una página web estática podría ser alojado en un Pentium Pro 150 y todavía sirven a miles de impresiones de cada día.

El enfoque básico que necesita tomar para responder esta pregunta es para probar y ver qué pasa. Hay un montón de herramientas que puede utilizar para artifically poner su sistema bajo presión para ver donde hebillas.

Una breve descripción de este es:

  • Poner el escenario en el lugar
  • Agregar el monitoreo
  • Agregar el tráfico
  • Evaluar los resultados
  • Remediar basado en resultados
  • Enjuague, repita hasta que razonablemente feliz

Poner el escenario en el lugar

Básicamente, con el fin de poner a prueba algunas de carga, usted necesita algo para probar en contra. Configurar un entorno de prueba en contra. Esto debe ser seguido muy de cerca de adivinar a su producción de hardware, si es posible, de lo contrario será dejado la extrapolación de los datos.

Configurar los servidores, cuentas, sitios web, ancho de banda, etc. Incluso si usted no esta dentro de las máquinas virtuales que ACEPTAR que mientras que usted está preparado para la escala de sus resultados.

Así que, voy a configurar una potencia media de la máquina virtual (dos núcleos, memoria RAM de 512 MB, 4 GB unidad de disco duro) e instalar mi favorito equilibrador de carga, haproxy dentro de Red Hat Linux en la máquina virtual.

Yo también voy a tener dos servidores web detrás del equilibrador de carga que voy a utilizar para la prueba de carga, el equilibrador de carga. Estos dos servidores web están configurados de forma idéntica a mi los sistemas vivos.

Agregar El Monitoreo

Usted necesitará algunas métricas para monitorear, así que voy a medir el número de solicitudes que conseguir a través de mi web, servidores, y cómo muchas peticiones que pueden pasar por por segundo antes de que los usuarios comienzan a conseguir un tiempo de respuesta de más de dos segundos.

Yo también voy a supervisar la RAM, la CPU y uso de disco en la haproxy de instancia para asegurarse de que el equilibrador de carga puede manejar las conexiones.

Cómo hacerlo depende mucho de sus plataformas y está fuera del alcance de esta respuesta. Usted puede ser que necesite para revisar la web de archivos de registro del servidor de inicio de los contadores de rendimiento, o depender de la capacidad de información de su prueba de estrés de la herramienta.

Un par de cosas que usted siempre quiere monitor:

  • El uso de la CPU
  • El uso de la RAM
  • El uso de disco
  • La latencia del disco
  • La utilización de la red

Usted puede también elegir mirar interbloqueos de SQL, tiempos de búsqueda, etc, dependiendo de lo que estás probando.

Agregar el tráfico

Esto es donde las cosas se ponen divertidas. Ahora lo que necesita para simular una carga de prueba. Hay un montón de herramientas que pueden hacer esto, con opciones configurables:

Elija un número, cualquier número. Digamos que usted va a ver cómo el sistema responde con 10.000 visitas por minuto. No importa el número que usted elija, ya que vamos a repetir este paso tantas veces, el ajuste de ese número hacia arriba o hacia abajo para ver cómo responde el sistema.

Idealmente, usted debe distribuir estos 10.000 solicitudes a través de varias pruebas de carga de los clientes/nodos, de modo que un solo cliente no se convierta en un cuello de botella de las solicitudes. Por ejemplo, JMeter la Prueba Remoto proporciona una interfaz central desde la cual lanzar varios clientes de un control de Jmeter de la máquina.

Pulse la magia de Ir botón y ver su web en los servidores de fundir y de choque.

Evaluar los resultados

Por lo tanto, ahora que usted necesita para volver a su métricas recopilada en el paso 2. Verá que con 10.000 conexiones simultáneas, su haproxy cuadro es apenas romper a sudar, pero el tiempo de respuesta con dos servidores web es un toque más de cinco segundos. Eso no está bien - recuerde que su tiempo de respuesta es el objetivo de dos segundos. Por lo tanto, necesitamos hacer algunos cambios.

Remediar

Ahora, usted necesita para acelerar su sitio web por más de dos veces. Así que usted sabe que usted necesita para cualquiera de escala, o la escala.

Para aumentar la escala, se hacen más grandes servidores web, más RAM, más rápido de los discos.

A escala, tener más servidores.

El uso de métricas a partir del paso 2, y la prueba, para tomar esta decisión. Por ejemplo, si usted vio que la latencia del disco fue masiva durante la prueba, usted sabe que usted necesita para ampliar y más unidades de disco duro.

Si usted vio que el procesador estaba sentado al 100% durante la prueba, tal vez usted necesita para aumentar la escala para agregar servidores web adicionales para reducir la presión sobre los servidores existentes.

No hay genérico de una respuesta correcta o incorrecta, no sólo lo que es correcto para usted. Pruebe la escala, y si eso no funciona, escala fuera de lugar. O no, depende de usted y de pensar fuera de la caja.

Digamos que vamos a escalar. Así que me decido a clonar mis dos servidores web (VMs) y ahora tengo cuatro servidores web.

Enjuague, repita

Empezar de nuevo desde el Paso 3. Si usted encuentra que las cosas no van como se esperaba (por ejemplo, hemos duplicado los servidores web, pero los tiempos de respuesta son todavía más de dos segundos), a continuación, busque en otros cuellos de botella. Por ejemplo, se duplicó el de los servidores web, pero todavía tiene una mierda de servidor de base de datos. O clonados más VMs, sino porque están en el mismo host físico, que sólo se logra mayor contención para los servidores de los recursos.

Usted puede utilizar este procedimiento para probar otras partes del sistema. En lugar de golpear el equilibrador de carga, pruebe a pulsar el servidor web directamente, o el de SQL server mediante una SQL herramienta de benchmarking.

12voto

davecb Puntos 76

Capacidad de planificación se inicia con la medición, en este caso el tiempo de respuesta frente a la carga. Una vez conocido el grado en que los programas se ralentiza con la carga, que NO es una función lineal, puede seleccionar un objetivo de tiempo de respuesta y, a continuación, descubrir los recursos que se usarán para cumplir con ese objetivo para una cantidad dada de carga.

La medición del desempeño se realiza siempre con el tiempo de las unidades, como

  • son lo que los usuarios se preocupan por
  • se puede escalar hacia arriba y hacia abajo

Cosas como %de la CPU y los IOPS son específicas del sistema, por lo que sólo utiliza cuando se tiene previsto el sistema y se mide en pre-producción, para actuar como un "sustituto" de lo que te importa, el tiempo.

9voto

gWaldo Puntos 9177

La Planificación de la capacidad es una problemática de la bestia. Es tanto ciencia como arte (si, definitivamente, uno oscuro).

El mejor caso es que tomar decisiones bien informadas y fortuna/suerte te favorece por tener la realidad de satisfacer sus supuestos. Si su capacidad supuestos de la realidad, de ver como una mística de la yogui. Desafortunadamente, si tu hipótesis sobreimpulso realidad, parecen haber superado y que se gasta más de la cuenta. Más por desgracia, si sus suposiciones son por debajo de la eventual realidad (o lo incorrecto), le falta la capacidad que usted necesita, y tendrá que luchar para mitigar las fallas de su gemido de la infraestructura, que te hace ver como si la falta de competencia.

No hay presión...

Por desgracia, el oscuro arte de la Planificación de la Capacidad es más de lo que razonablemente se puede resumir en una sola ServerFault respuesta; realmente, es un tema digno de libros.

Afortunadamente, existe un libro: "El Arte de la Planificación de la Capacidad"

7voto

David W Puntos 1612

Para ampliar sobre Mark Henderson post, estoy escribiendo esto específicas de Apache. Para reiterar lo que él dijo, "La respuesta corta es: Nadie puede responder a esta pregunta, excepto tú." El texto de esta respuesta se tomó mucho de mi respuesta a una pregunta similar sobre un Drupal el rendimiento del sitio web.

La Configuración De Apache Con Mod_Prefork

Apache es sin duda uno de los (si no la) servidor web más popular disponible. Es de código abierto y todavía se mantiene activa. Se puede ejecutar tanto en sistemas operativos Linux y Windows, pero es más popular en el mundo Linux / Unix.

Usted debe nunca utilizar un fuera-de-la-cuadro de configuración de Apache. Usted siempre necesita optimizar Apache a su sitio. El principal de configuración de Apache archivo en CentOS se encuentra en /etc/httpd/conf/httpd.conf, y el principal archivo de configuración de Apache en Ubuntu sistemas normalmente se encuentra en /etc/apache2/apache2.conf. Adicional de los archivos de configuración se utilizan para cosas como los Hosts Virtuales.

Como una gran cantidad de software, Apache está construido para ser flexible y personalizado según las necesidades del sitio web. Hay diferentes Módulos de procesos Múltiples que Apache puede ser configurado para usar para enlazar a un puerto de red y aceptar y procesar las solicitudes.

La mayoría del tiempo en defecto de Apache instalaciones que vienen con CentOS y Ubuntu servidores, el MPM "mod_prefork" se utiliza. Asumiendo que usted está utilizando mod_prefork (si no estás seguro, entonces, que es la más probable, pero sólo se puede determinar que) he Aquí los fundamentos de cómo configurarlo:

  • Averiguar la cantidad máxima de memoria que desea que Apache para que pueda ser capaz de utilizar.
  • Fuertemente pruebe su sitio web, y determinar la cantidad de memoria de cada proceso de Apache usa (con la parte superior).
  • Tomar el proceso de Apache en la parte superior que utiliza la mayor parte de la memoria, añadir un poco a ella para una buena medida y, a continuación, dividir el primer número (cantidad máxima de memoria que desea que Apache para usar) por este nuevo número.
  • El número que se obtiene debe ser su MaxClients & ServerLimit variables.

Ciertamente no es este el final de una respuesta a todo. El ajuste de su servidor Apache lleva tiempo y requiere de experiencia para llegar apenas a la derecha.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X