Μέτρησα τον μέγιστο αριθμό περιπτώσεων που μπορεί να χειριστεί ταυτόχρονα ο διακομιστής ιστού (Apache) χρησιμοποιώντας έναν διακομιστή ενοικίασης VPS.


Ημερομηνία δημοσίευσης:31 Δεκεμβρίου 2020.



INFOMARTION > Μέτρησα τον μέγιστο αριθμό περιπτώσεων που μπορεί να χειριστεί ταυτόχρονα ο διακομιστής ιστού (Apache) χρησιμοποιώντας έναν διακομιστή ενοικίασης VPS.

Επισκόπηση.

Έχω μετρήσει τον μέγιστο αριθμό περιπτώσεων που μπορεί να επεξεργαστεί ταυτόχρονα ο διακομιστής ιστού (Apache) και θα ήθελα να γράψω για τα αποτελέσματα. Ήμασταν περίεργοι για τον μέγιστο αριθμό αιτήσεων που θα μπορούσαν να εξυπηρετηθούν, οπότε πραγματοποιήσαμε μια έρευνα. Χρησιμοποιήστε το ως αναφορά για την επιλογή των προδιαγραφών του διακομιστή VPS.

Αυτή τη φορά, οι μετρήσεις πραγματοποιήθηκαν μόνο στον WEB (Apache), αλλά ανατρέξτε στο παρακάτω άρθρο για μετρήσεις στους διακομιστές WEB/AP (Apache και Tomcat).

Μέτρησα τον μέγιστο αριθμό διακομιστών WEB/AP (Apache και Tomcat) που μπορούν να χειριστούν ταυτόχρονα χρησιμοποιώντας έναν διακομιστή ενοικίασης VPS.

Πίνακας περιεχομένων

  1. μέτρηση
  2. Λεπτομέρειες των αποτελεσμάτων των μετρήσεων
  3. περίληψη

1. μέτρηση

1-1. Περιβάλλον μέτρησης

Ακολουθεί το περιβάλλον στο οποίο θα γίνουν οι μετρήσεις.

■Πληροφορίες διακομιστή ενοικίασης

CPU2core
memory1GB
SSD50GB

■Πληροφορίες διακομιστή

OSCentOS 7.4 64bit
Διακομιστής WebApache HTTP Server 2.4.41

1-2. Μέθοδος μέτρησης

Θα ήθελα να το μετρήσω αυτό χρησιμοποιώντας το JMeter. Το JMeter είναι ένα εργαλείο μέτρησης φορτίου που εκτελείται σε Java. Το εργαλείο επιτρέπει την ταυτόχρονη υποβολή μεγάλου αριθμού αιτήσεων. Θα θέλαμε να αυξήσουμε σταδιακά τον αριθμό των ταυτόχρονων αιτήσεων χρησιμοποιώντας το JMeter και να αυξήσουμε το φορτίο έως ότου η επεξεργασία δεν μπορεί πλέον να αντιμετωπιστεί.

Οι ειδικές συνθήκες περιλαμβάνουν.

  • διάστημα αίτησης・・・5 δευτερόλεπτα.
  • Αριθμός ταυτόχρονων αιτήσεων・・・10 περιπτώσεις.(Οι μετρήσεις αυξάνονταν σταδιακά κατά 10 περιπτώσεις κάθε φορά.)
  • Μέτρηση χρόνου・・・60 δευτερόλεπτα.

Ο χρόνος μέτρησης είναι "60 δευτερόλεπτα" και το διάστημα αίτησης "5 δευτερόλεπτα", οπότε θέλετε να αποκτήσετε πρόσβαση στο σύστημα 12 φορές (60÷5) επανειλημμένα.

1-3. αποτέλεσμα της μέτρησης

Τελικά, πολλοί άνθρωποι ενδιαφέρονται για το συμπέρασμα σχετικά με το ποιες προδιαγραφές μπορεί να χειριστεί ο διακομιστής και πόσο μπορεί να χειριστεί, οπότε θα ήθελα να αναφέρω πρώτα το συμπέρασμα.

CPU:2core
memory:1GB
SSD:50GB
Μπορούν να διεκπεραιωθούν έως και 120 ταυτόχρονες αιτήσεις.

Τα αποτελέσματα αυτής της μέτρησης έδειξαν τα παραπάνω. Από τα παραπάνω αποτελέσματα συνάγονται τα εξής. Προσπαθήστε να το χρησιμοποιήσετε ως κριτήριο κατά την επιλογή των προδιαγραφών του διακομιστή.

CPU:1core
memory:512MB
SSD:25GB
Μπορούν να διεκπεραιωθούν έως και 60 ταυτόχρονες αιτήσεις.
CPU:2core
memory:1GB
SSD:50GB
Μπορούν να διεκπεραιωθούν έως και 120 ταυτόχρονες αιτήσεις.
CPU:3core
memory:2GB
SSD:100GB
Μπορούν να διεκπεραιωθούν έως και 240 ταυτόχρονες αιτήσεις.

Ακόμη και με τις προδιαγραφές "CPU: 1core", "μνήμη: 512MB" και "SSD: 25GB", διαπιστώθηκε ότι ένα σύστημα περίπου 60 ατόμων μπορούσε να λειτουργήσει χωρίς προβλήματα.

2. Λεπτομέρειες των αποτελεσμάτων των μετρήσεων

Έχουμε περιγράψει τα αποτελέσματα των μετρήσεων νωρίτερα, αλλά αν ενδιαφέρεστε για το είδος των αποτελεσμάτων που έχουμε περιγράψει, ελέγξτε επίσης τις λεπτομέρειες των αποτελεσμάτων των μετρήσεων που θα περιγραφούν στο μέλλον.

2-1. Μετρήσεις διακομιστή WEB (Apache)

Επανειλημμένες αιτήσεις απορρίφθηκαν σε σελίδες που δημιουργήθηκαν σε HTML. Πρόκειται για μια απλή σελίδα χωρίς επεξεργασία PHP ή πολυπλοκότητα JavaScript.

Οι μετρήσεις έδειξαν τα ακόλουθα αποτελέσματα.

  • Για 10 ταυτόχρονες αιτήσεις⇒OK
  • Για 20 ταυτόχρονες αιτήσεις⇒OK
  • Για 30 ταυτόχρονες αιτήσεις⇒OK
  • Για 40 ταυτόχρονες αιτήσεις⇒OK
  • Για 50 ταυτόχρονες αιτήσεις⇒OK
  • Για 60 ταυτόχρονες αιτήσεις⇒OK
  • Για 70 ταυτόχρονες αιτήσεις⇒OK
  • Για 80 ταυτόχρονες αιτήσεις⇒OK
  • Για 90 ταυτόχρονες αιτήσεις⇒OK
  • Για 100 ταυτόχρονες αιτήσεις⇒OK
  • 110 ταυτόχρονες αιτήσεις⇒OK
  • Για 120 ταυτόχρονες αιτήσεις⇒OK
  • Για 130 ταυτόχρονες αιτήσεις⇒NG

Εμφανίστηκε σφάλμα στην 130η περίπτωση. Η αιτία ήταν ένα σφάλμα σύνδεσης με τον Apache. Η κατάσταση του διακομιστή εκείνη τη στιγμή είχε ως εξής.

  • Χρήση CPU・・・26%
  • ρυθμός χρήσης μνήμης・・・100%

Η πλήρης έλλειψη μνήμης ήταν το πρόβλημα.

Για τους λίγο πιο ψαγμένους, η διαμόρφωση του Apache Multi-Processing Module (MPM) έχει ως εξής. Το MPM εξηγείται απλά ως η ρύθμιση του πόσο επιτρέπεται στον Apache να επεξεργάζεται παράλληλα.

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

Η ρύθμιση που ενδιαφέρει είναι "250" για το "MaxRequestWorkers". Πρόκειται για τη ρύθμιση του μέγιστου αριθμού υποθέσεων που μπορεί να επεξεργαστεί ο Apache ταυτόχρονα. '250', οπότε 250 περιπτώσεις θα μπορούσαν να υποβληθούν σε μέγιστη παράλληλη επεξεργασία, αλλά εξετάζοντας τη χρήση μνήμης, χρησιμοποιήθηκαν περίπου 8 MB μνήμης ανά περίπτωση.

Φαινόταν να χρησιμοποιεί 960 MB μνήμης (8M x 120 διεργασίες) και η τιμή ρύθμισης ήταν '250', αλλά φαινόταν ότι δεν ήταν δυνατό να δημιουργηθούν περισσότερες από '120' διεργασίες.
※Η μνήμη του διακομιστή έχει φτάσει σχεδόν στο όριο του 1G.

Κατά την πραγματική λειτουργία του διακομιστή, εάν συμπεριληφθούν επίσης η PHP και η Java, το όριο είναι περίπου 100 περιπτώσεις, και εάν υπάρχει χώρος, 80 περιπτώσεις μπορούν να υποβληθούν σε ταυτόχρονη παράλληλη επεξεργασία.

Όταν μόνο ο Apache είναι εγκατεστημένος και εκτελείται, με προδιαγραφές "CPU: 2core, μνήμη: 1GB, SSD: 50GB", ο αριθμός των ταυτόχρονων προσβάσεων "120" βρέθηκε να είναι το όριο.

2-2. αντίτιμο

Από εδώ και πέρα γίνεται μια εξέταση, αλλά καθώς η μνήμη είναι το σημείο συμφόρησης, αν αλλάξει η μνήμη, θα αυξηθεί ο αριθμός των διεργασιών που μπορούν να υποβληθούν σε ταυτόχρονη επεξεργασία.

【Παρόντες.(memory1GB)】

  • memory:1GB
  • Αριθμός νημάτων Apache:120 περιπτώσεις
  • Κατανάλωση μνήμης ανά νήμα στον Apache.:8MB
  • Κατανάλωση μνήμης Apache:960MB(120 περιπτώσεις×8MB)

【μετά την αλλαγή(memory2GB)】

  • memory:2GB
  • Αριθμός νημάτων Apache:240 περιπτώσεις.
  • Κατανάλωση μνήμης ανά νήμα στον Apache.:8MB
  • Κατανάλωση μνήμης Apache:1920MB(240 περιπτώσεις.×8MB)

Εάν η μνήμη αυξηθεί στα 2 GB, μπορεί να διπλασιαστεί ο αριθμός των περιπτώσεων σε περίπου 240 ταυτόχρονα. Αν η μνήμη αυξηθεί στα 3GB, φαίνεται ότι μπορεί να γίνει περισσότερη ταυτόχρονη επεξεργασία, αλλά το "MaxRequestWorkers (μέγιστος αριθμός περιπτώσεων προς ταυτόχρονη επεξεργασία)" του MPM του Apache είναι "250", οπότε ο συντονισμός εδώ θα είναι επίσης απαραίτητος αν η μνήμη αυξηθεί περαιτέρω. Αντίθετα, αν η μνήμη μειωθεί στο μισό, θα έχει ως εξής.

【μετά την αλλαγή(memory512GB)】

  • memory:512GB
  • Αριθμός νημάτων Apache:60 περιπτώσεις.
  • Κατανάλωση μνήμης ανά νήμα στον Apache.:8MB
  • Κατανάλωση μνήμης Apache:480MB(60 περιπτώσεις.×8MB)

3. περίληψη

Μετρήσαμε τον μέγιστο αριθμό περιπτώσεων που μπορεί να επεξεργαστεί ταυτόχρονα ο διακομιστής ιστού (Apache). Διαπιστώθηκε ότι ένα σύστημα περίπου 60 ατόμων μπορούσε να λειτουργήσει χωρίς προβλήματα με "CPU: 1core", "μνήμη: 512MB" και "SSD: 25GB".

Η έρευνα βασίζεται στην υπόθεση ότι κανένα άλλο λογισμικό δεν εκτελείται με οριακή απόδοση. Συνιστάται να επιλέξετε μια προδιαγραφή με λίγο περιθώριο, καθώς πρόκειται για μια οριακή τιμή.

Σας ευχαριστούμε που παρακολουθήσατε μέχρι το τέλος.