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


Ημερομηνία δημοσίευσης:1 Ιανουαρίου 2021.



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

Επισκόπηση.

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

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

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

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

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

1. μέτρηση

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

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

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

CPU2core
memory1GB
SSD50GB

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

OSCentOS 7.4 64bit
Διακομιστής WebApache HTTP Server 2.4.41
Διακομιστής APApache Tomcat 9.0.27
Διακομιστής DBPostgreSQL 10.2
JavaOpenJDK 11

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εμφανίστηκε σφάλμα στην 90ή περίπτωση. Η αιτία ήταν ένα σφάλμα σύνδεσης με τον 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 μνήμης ανά περίπτωση.

Η Java φαινόταν να χρησιμοποιεί 320MB μνήμης (248M για το σωρό και 72M για το metaspace) και ο Apache 640MB μνήμης (8M x 80 διεργασίες), και παρόλο που η τιμή ρύθμισης MPM του Apache είναι '250', φαινόταν ότι δεν μπορούσε να δημιουργήσει περισσότερες από '80' διεργασίες.
※Ο διακομιστής έχει μνήμη 1G, οπότε η συνολική μνήμη για τον Apache και τη Java είναι 960MB, που είναι σχεδόν στο ανώτατο όριο.

Ο διακομιστής AP (από την πλευρά της Java) λειτουργούσε άψογα, οπότε το πρόβλημα ήταν ο διακομιστής WEB (Apache).

Όταν ο Apache και ο Tomcat είναι εγκατεστημένοι και λειτουργούν, διαπιστώσαμε ότι με τις προδιαγραφές "CPU: 2core, μνήμη: 1GB, SSD: 50GB", ο αριθμός των ταυτόχρονων προσβάσεων "80" είναι το όριο.(Η υπόθεση είναι ότι οι ρυθμίσεις μνήμης για τη Java είναι 248M για το σωρό και 72M για το metaspace.)

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

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

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

  • memory:1GB
  • Αριθμός νημάτων Apache:80 περιπτώσεις.
  • Κατανάλωση μνήμης ανά νήμα στον Apache.:8MB
  • Κατανάλωση μνήμης Apache:640MB(80 περιπτώσεις.×8MB)
  • Κατανάλωση μνήμης Tomcat:320MB(248 εκατ. ευρώ για το HEAP.、72m για το metaspace.)
  • Κατανάλωση μνήμης του Apache+Tomcat:960MB

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

  • memory:2GB
  • Αριθμός νημάτων Apache:200 περιπτώσεις
  • Κατανάλωση μνήμης ανά νήμα στον Apache.:8MB
  • Κατανάλωση μνήμης Apache:1600MB(200 περιπτώσεις×8MB)
  • Κατανάλωση μνήμης Tomcat:320MB(248 εκατ. ευρώ για το HEAP.、72m για το metaspace.)
  • Κατανάλωση μνήμης του Apache+Tomcat:1920MB

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

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

  • memory:512GB
  • Αριθμός νημάτων Apache:20 περιπτώσεις
  • Κατανάλωση μνήμης ανά νήμα στον Apache.:8MB
  • Κατανάλωση μνήμης Apache:160MB(20 περιπτώσεις×8MB)
  • Κατανάλωση μνήμης Tomcat:320MB(248 εκατ. ευρώ για το HEAP.、72m για το metaspace.)
  • Κατανάλωση μνήμης του Apache+Tomcat:480MB

3. περίληψη

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

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

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