He medido el número máximo de casos que el servidor web (Apache) puede manejar simultáneamente utilizando un servidor de alquiler VPS.


Fecha de publicación:31 de diciembre de 2020.



INFOMARTION > He medido el número máximo de casos que el servidor web (Apache) puede manejar simultáneamente utilizando un servidor de alquiler VPS.

Resumen.

He medido el número máximo de casos que el servidor web (Apache) puede procesar al mismo tiempo, y me gustaría escribir sobre los resultados. Teníamos curiosidad por saber el número máximo de solicitudes que se podían atender, así que hicimos una encuesta. Utilice esto como referencia para seleccionar las especificaciones del servidor VPS.

En esta ocasión, las mediciones se han llevado a cabo únicamente en el servidor WEB (Apache), pero en el artículo siguiente se pueden consultar las mediciones en los servidores WEB/AP (Apache y Tomcat).

He medido el número máximo de servidores WEB/AP (Apache y Tomcat) puede manejar al mismo tiempo utilizando un servidor de alquiler VPS.

Índice de contenidos

  1. medición
  2. Detalles de los resultados de las mediciones
  3. resumen

1. medición

1-1. Entorno de medición

A continuación se muestra el entorno en el que se realizarán las mediciones.

■Información sobre el servidor de alquiler

CPU2core
memory1GB
SSD50GB

■Información del servidor

OSCentOS 7.4 64bit
Servidor webApache HTTP Server 2.4.41

1-2. Método de medición

Me gustaría medir esto usando JMeter. JMeter es una herramienta de medición de carga que se ejecuta en Java. La herramienta permite lanzar un gran número de solicitudes al mismo tiempo. Nos gustaría aumentar gradualmente el número de peticiones simultáneas utilizando JMeter y aumentar la carga hasta que el procesamiento no pueda ser manejado.

Las condiciones específicas incluyen.

  • intervalo de solicitud・・・5 seg.
  • Número de solicitudes simultáneas・・・10 casos.(Las mediciones aumentaron gradualmente en 10 casos cada una.)
  • Medición del tiempo・・・60 segundos.

El tiempo de medición es de "60 segundos" y el intervalo de solicitud de "5 segundos", por lo que se quiere acceder al sistema 12 veces (60÷5) repetidamente.

1-3. resultado de la medición

Al final, mucha gente está interesada en la conclusión de qué especificaciones puede manejar el servidor y cuánto puede manejar, así que me gustaría exponer la conclusión primero.

CPU:2core
memory:1GB
SSD:50GB
Se pueden procesar hasta 120 solicitudes simultáneas.

Los resultados de esta medición mostraron lo anterior. Los resultados anteriores permiten inferir lo siguiente. Intente utilizar este criterio a la hora de elegir las especificaciones del servidor.

CPU:1core
memory:512MB
SSD:25GB
Se pueden procesar hasta 60 solicitudes simultáneas.
CPU:2core
memory:1GB
SSD:50GB
Se pueden procesar hasta 120 solicitudes simultáneas.
CPU:3core
memory:2GB
SSD:100GB
Se pueden procesar hasta 240 solicitudes simultáneas.

Incluso con especificaciones de "CPU: 1core", "memoria: 512MB" y "SSD: 25GB", se comprobó que un sistema de unas 60 personas podía funcionar sin problemas.

2. Detalles de los resultados de las mediciones

Ya hemos descrito los resultados de las mediciones, pero si está interesado en el tipo de resultados que hemos descrito, consulte también los detalles de los resultados de las mediciones que se describirán en el futuro.

2-1. Medidas del servidor WEB (Apache)

Se lanzaron peticiones repetidas contra páginas creadas en HTML. Se trata de una página sencilla, sin procesamiento PHP ni complejidad JavaScript.

Las mediciones mostraron los siguientes resultados.

  • Para 10 solicitudes simultáneas⇒OK
  • Para 20 solicitudes simultáneas⇒OK
  • Para 30 solicitudes simultáneas⇒OK
  • Para 40 solicitudes simultáneas⇒OK
  • Para 50 solicitudes simultáneas⇒OK
  • Para 60 solicitudes simultáneas⇒OK
  • Para 70 solicitudes simultáneas⇒OK
  • Para 80 solicitudes simultáneas⇒OK
  • Para 90 solicitudes simultáneas⇒OK
  • Para 100 solicitudes simultáneas⇒OK
  • 110 solicitudes simultáneas⇒OK
  • Para 120 solicitudes simultáneas⇒OK
  • Para 130 solicitudes simultáneas⇒NG

El error se produjo en el caso 130. La causa era un error de conexión con Apache. El estado del servidor en ese momento era el siguiente.

  • Utilización de la CPU・・・26%
  • tasa de uso de la memoria・・・100%

La falta total de memoria era el cuello de botella.

Para los más frikis, la configuración del módulo de multiprocesamiento de Apache (MPM) es la siguiente. MPM se explica simplemente como la configuración de la cantidad de Apache que se permite procesar en paralelo.

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

El ajuste de interés es "250" para "MaxRequestWorkers". Este es un ajuste para el número máximo de casos que Apache puede procesar al mismo tiempo. '250', por lo que se podían procesar 250 casos en paralelo máximo, pero mirando el uso de la memoria, se utilizaban unos 8 MB de memoria por caso.

Parecía estar usando 960 MB de memoria (8M x 120 procesos) y el valor de ajuste era '250', pero parecía que no era posible crear más de '120' procesos.
※La memoria del servidor está casi al límite de 1G.

Al operar realmente el servidor, si se incluyen también PHP y Java, el límite es de unos 100 casos, y si hay espacio, se pueden procesar 80 casos simultáneamente en paralelo.

Cuando sólo se instala y ejecuta Apache, con las especificaciones "CPU: 2core, memoria: 1GB, SSD: 50GB", el número de accesos simultáneos "120" resultó ser el límite.

2-2. consideración

A partir de aquí se convierte en una consideración, pero como la memoria es el cuello de botella, si se cambia la memoria, el número de procesos que se pueden procesar simultáneamente aumentará.

【Presente.(memory1GB)】

  • memory:1GB
  • Número de hilos de Apache:120 casos
  • Consumo de memoria por hilo en Apache.:8MB
  • Consumo de memoria de Apache:960MB(120 casos×8MB)

【después del cambio(memory2GB)】

  • memory:2GB
  • Número de hilos de Apache:240 casos.
  • Consumo de memoria por hilo en Apache.:8MB
  • Consumo de memoria de Apache:1920MB(240 casos.×8MB)

Si se aumenta la memoria a 2 GB, es posible duplicar el número de casos a unos 240 simultáneamente. Si se aumenta la memoria a 3GB, parece que se puede hacer más procesamiento concurrente, pero el "MaxRequestWorkers (número máximo de casos a procesar concurrentemente)" del MPM de Apache es "250", por lo que el ajuste aquí también será necesario si se aumenta más la memoria. Por el contrario, si la memoria se reduce a la mitad, sería como sigue.

【después del cambio(memory512GB)】

  • memory:512GB
  • Número de hilos de Apache:60 casos.
  • Consumo de memoria por hilo en Apache.:8MB
  • Consumo de memoria de Apache:480MB(60 casos.×8MB)

3. resumen

Hemos medido el número máximo de casos que el servidor web (Apache) puede procesar al mismo tiempo. Se comprobó que un sistema de unas 60 personas podía funcionar sin problemas con "CPU: 1core", "memoria: 512MB" y "SSD: 25GB".

La encuesta se basa en la suposición de que ningún otro software está funcionando con un rendimiento marginal. Se recomienda elegir una especificación con un poco de margen, ya que es un valor marginal.

Gracias por mirar hasta el final.