J'ai mesuré le nombre maximum de cas que le serveur web (Apache) peut traiter simultanément en utilisant un serveur de location VPS.


Date de publication:31 décembre 2020.



INFOMARTION > J'ai mesuré le nombre maximum de cas que le serveur web (Apache) peut traiter simultanément en utilisant un serveur de location VPS.

Vue d'ensemble.

J'ai mesuré le nombre maximum de cas que le serveur web (Apache) peut traiter en même temps, et je voudrais écrire sur les résultats. Nous étions curieux de connaître le nombre maximum de demandes pouvant être servies, nous avons donc mené une enquête. Utilisez-le comme référence pour sélectionner les spécifications du serveur VPS.

Cette fois, les mesures ont été effectuées uniquement sur le WEB (Apache), mais veuillez vous référer à l'article ci-dessous pour les mesures sur les serveurs WEB/AP (Apache et Tomcat).

J'ai mesuré le nombre maximum de serveurs WEB/AP (Apache et Tomcat) pouvant être gérés en même temps en utilisant un serveur de location VPS.

Table des matières

  1. mesure
  2. Détails des résultats des mesures
  3. résumé

1. mesure

1-1. Environnement de mesure

Voici l'environnement dans lequel les mesures seront effectuées.

■Informations sur le serveur de location

CPU2core
memory1GB
SSD50GB

■Informations sur le serveur

OSCentOS 7.4 64bit
Serveur webApache HTTP Server 2.4.41

1-2. Méthode de mesure

Je voudrais mesurer cela en utilisant JMeter. JMeter est un outil de mesure de charge qui fonctionne en Java. Cet outil permet de lancer un grand nombre de requêtes en même temps. Nous souhaitons augmenter progressivement le nombre de demandes simultanées à l'aide de JMeter et augmenter la charge jusqu'à ce que le traitement ne puisse plus être géré.

Les conditions spécifiques comprennent.

  • intervalle de demande・・・5 sec.
  • Nombre de demandes simultanées・・・10 cas.(Les mesures ont augmenté progressivement de 10 cas chacune.)
  • Temps de mesure・・・60 secondes.

Le temps de mesure est de "60 secondes" et l'intervalle de demande de "5 secondes", vous voulez donc accéder au système 12 fois (60÷5) de manière répétée.

1-3. résultat des mesures

En fin de compte, de nombreuses personnes sont intéressées par la conclusion sur les spécifications que le serveur peut gérer et sur la quantité qu'il peut gérer, c'est pourquoi je voudrais énoncer la conclusion en premier.

CPU:2core
memory:1GB
SSD:50GB
Jusqu'à 120 demandes simultanées peuvent être traitées.

Les résultats de cette mesure ont montré ce qui précède. Les résultats ci-dessus permettent de déduire ce qui suit. Essayez d'utiliser ce critère lors du choix des spécifications du serveur.

CPU:1core
memory:512MB
SSD:25GB
Jusqu'à 60 demandes simultanées peuvent être traitées.
CPU:2core
memory:1GB
SSD:50GB
Jusqu'à 120 demandes simultanées peuvent être traitées.
CPU:3core
memory:2GB
SSD:100GB
Jusqu'à 240 demandes simultanées peuvent être traitées.

Même avec des spécifications de "CPU : 1core", "mémoire : 512MB" et "SSD : 25GB", il a été constaté qu'un système d'environ 60 personnes pouvait fonctionner sans problème.

2. Détails des résultats des mesures

Nous avons décrit les résultats des mesures précédemment, mais si vous êtes intéressé par le type de résultats que nous avons décrits, veuillez également consulter les détails des résultats des mesures qui seront décrits ultérieurement.

2-1. Mesures du serveur WEB (Apache)

Des requêtes répétées ont été lancées contre des pages créées en HTML. Il s'agit d'une page simple, sans traitement PHP ni complexité JavaScript.

Les mesures ont donné les résultats suivants.

  • Pour 10 demandes simultanées⇒OK
  • Pour 20 demandes simultanées⇒OK
  • Pour 30 demandes simultanées⇒OK
  • Pour 40 demandes simultanées⇒OK
  • Pour 50 demandes simultanées⇒OK
  • Pour 60 demandes simultanées⇒OK
  • Pour 70 demandes simultanées⇒OK
  • Pour 80 demandes simultanées⇒OK
  • Pour 90 demandes simultanées⇒OK
  • Pour 100 demandes simultanées⇒OK
  • 110 demandes simultanées⇒OK
  • Pour 120 demandes simultanées⇒OK
  • Pour 130 demandes simultanées⇒NG

Une erreur s'est produite au 130ème cas. La cause était une erreur de connexion à Apache. L'état du serveur à ce moment-là était le suivant.

  • Utilisation du CPU・・・26%
  • taux d'utilisation de la mémoire・・・100%

Un manque total de mémoire était le goulot d'étranglement.

Pour ceux qui sont un peu plus geeks, la configuration du module multiprocesseur (MPM) d'Apache est la suivante. MPM s'explique simplement comme le réglage de la quantité de données qu'Apache est autorisé à traiter en parallèle.

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

Le paramètre qui nous intéresse est "250" pour "MaxRequestWorkers". Il s'agit du nombre maximum de cas qu'Apache peut traiter en même temps. 250", ce qui permet de traiter 250 cas en parallèle au maximum, mais si l'on regarde l'utilisation de la mémoire, environ 8 Mo de mémoire sont utilisés par cas.

Il semblait utiliser 960 Mo de mémoire (8M x 120 processus) et la valeur du paramètre était '250', mais il semblait qu'il n'était pas possible de créer plus de '120' processus.
※La mémoire du serveur a presque atteint sa limite de 1G.

Lors du fonctionnement effectif du serveur, si PHP et Java sont également inclus, la limite est d'environ 100 cas, et s'il y a de la place, 80 cas peuvent être traités simultanément en parallèle.

Lorsque seul Apache est installé et fonctionne, avec les spécifications "CPU : 2core, mémoire : 1GB, SSD : 50GB", le nombre d'accès simultanés "120" s'est avéré être la limite.

2-2. considération

À partir de là, il faut tenir compte du fait que la mémoire est le goulot d'étranglement. Si la mémoire est modifiée, le nombre de processus pouvant être traités simultanément augmentera.

【Présent.(memory1GB)】

  • memory:1GB
  • Nombre de threads Apache:120 cas
  • Consommation de mémoire par thread dans Apache.:8MB
  • Consommation de mémoire d'Apache:960MB(120 cas×8MB)

【après le changement(memory2GB)】

  • memory:2GB
  • Nombre de threads Apache:240 cas.
  • Consommation de mémoire par thread dans Apache.:8MB
  • Consommation de mémoire d'Apache:1920MB(240 cas.×8MB)

Si la mémoire est augmentée à 2 Go, il sera possible de doubler le nombre de cas pour atteindre environ 240 cas simultanément. Si la mémoire est augmentée à 3GB, il semble qu'un plus grand nombre de traitements simultanés puisse être effectué, mais le "MaxRequestWorkers (nombre maximum de cas à traiter simultanément)" du MPM d'Apache est "250", donc un réglage ici sera également nécessaire si la mémoire est augmentée davantage. A l'inverse, si la mémoire est divisée par deux, on obtient le résultat suivant.

【après le changement(memory512GB)】

  • memory:512GB
  • Nombre de threads Apache:60 caisses.
  • Consommation de mémoire par thread dans Apache.:8MB
  • Consommation de mémoire d'Apache:480MB(60 caisses.×8MB)

3. résumé

Nous avons mesuré le nombre maximum de cas que le serveur web (Apache) peut traiter en même temps. Il a été constaté qu'un système d'environ 60 personnes pouvait fonctionner sans problème avec "CPU : 1core", "mémoire : 512MB" et "SSD : 25GB".

L'enquête repose sur l'hypothèse qu'aucun autre logiciel ne fonctionne à des performances marginales. Il est recommandé de choisir une spécification avec une certaine marge de manœuvre, car il s'agit d'une valeur marginale.

Merci d'avoir regardé jusqu'à la fin.