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.


Fecha de publicación:1 de enero de 2021.



INFOMARTION > 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.

Resumen.

He medido el número máximo de casos que los servidores WEB/AP (Apache y Tomcat) pueden 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 realizado en los servidores WEB/AP (Apache y Tomcat), pero en el artículo siguiente se pueden consultar las mediciones sólo en el WEB (Apache).

He medido el número máximo de casos que el servidor web (Apache) puede manejar simultáneamente 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
Servidor APApache Tomcat 9.0.27
Servidor de BDPostgreSQL 10.2
JavaOpenJDK 11

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 80 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 20 solicitudes simultáneas.
CPU:2core
memory:1GB
SSD:50GB
Se pueden procesar hasta 80 solicitudes simultáneas
CPU:3core
memory:2GB
SSD:100GB
Se pueden procesar hasta 200 solicitudes simultáneas.

Se comprobó que un sistema con un tamaño de unos 20 usuarios funcionaría sin problemas con "CPU: 1core", "memoria: 512MB" y "SSD: 25GB".

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/AP (Apache, Tomcat)

La solicitud fue lanzada en un escenario en el que el usuario se conecta desde la pantalla de inicio de sesión y después de iniciar la sesión, se muestra la pantalla de la lista. Por cierto, la pantalla está construida con el framework de Spring, incluyendo la función de autenticación.

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⇒NG

El error se produjo en el caso 90. 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%
  • utilización 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.

Java parecía estar usando 320MB de memoria (248M para el heap y 72M para el metaspace) y Apache 640MB de memoria (8M x 80 procesos), y aunque el valor de configuración del MPM de Apache es '250', parecía que no podía crear más de '80' procesos.
※El servidor tiene 1G de memoria, por lo que la memoria total para Apache y Java es de 960MB, que está casi en el límite superior.

El servidor AP (lado Java) funcionaba bien, así que el cuello de botella era el servidor WEB (Apache).

Cuando Apache y Tomcat están instalados y funcionando, encontramos que con las especificaciones "CPU: 2core, memoria: 1GB, SSD: 50GB", el número de accesos simultáneos "80" es el límite.(Se supone que la configuración de memoria para Java es de 248M para el heap y 72M para el metaspace.)

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 modifica la memoria, también aumentará el número de procesos que se pueden procesar simultáneamente.

【Presente.(memory1GB)】

  • memory:1GB
  • Número de hilos de Apache:80 casos.
  • Consumo de memoria por hilo en Apache.:8MB
  • Consumo de memoria de Apache:640MB(80 casos.×8MB)
  • Consumo de memoria de Tomcat:320MB(248 millones de euros para el HEAP.、72m para el metaespacio.)
  • Consumo de memoria de Apache+Tomcat:960MB

【después del cambio(memory2GB)】

  • memory:2GB
  • Número de hilos de Apache:200 casos
  • Consumo de memoria por hilo en Apache.:8MB
  • Consumo de memoria de Apache:1600MB(200 casos×8MB)
  • Consumo de memoria de Tomcat:320MB(248 millones de euros para el HEAP.、72m para el metaespacio.)
  • Consumo de memoria de Apache+Tomcat:1920MB

Con 2 GB de memoria, puede ser posible procesar 200 casos 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. También puede ser necesario ajustar la memoria de Java. 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:20 casos
  • Consumo de memoria por hilo en Apache.:8MB
  • Consumo de memoria de Apache:160MB(20 casos×8MB)
  • Consumo de memoria de Tomcat:320MB(248 millones de euros para el HEAP.、72m para el metaespacio.)
  • Consumo de memoria de Apache+Tomcat:480MB

3. resumen

Se describen los resultados de la medición del número máximo de casos que los servidores WEB/AP (Apache y Tomcat) pueden procesar al mismo tiempo. Se comprobó que un sistema con un tamaño de unos 20 usuarios funcionaría 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.