Μέτρησα τον μέγιστο αριθμό διακομιστών WEB/AP (Apache και Tomcat) που μπορούν να χειριστούν ταυτόχρονα χρησιμοποιώντας έναν διακομιστή ενοικίασης VPS.
Ημερομηνία δημοσίευσης:1 Ιανουαρίου 2021.
INFOMARTION > Μέτρησα τον μέγιστο αριθμό διακομιστών WEB/AP (Apache και Tomcat) που μπορούν να χειριστούν ταυτόχρονα χρησιμοποιώντας έναν διακομιστή ενοικίασης VPS.
Επισκόπηση.
Μέτρησα τον μέγιστο αριθμό περιπτώσεων που μπορούν να επεξεργαστούν ταυτόχρονα οι διακομιστές WEB/AP (Apache και Tomcat) και θα ήθελα να γράψω για τα αποτελέσματα. Ήμασταν περίεργοι για τον μέγιστο αριθμό αιτημάτων που θα μπορούσαν να εξυπηρετηθούν, οπότε πραγματοποιήσαμε μια έρευνα. Χρησιμοποιήστε το ως αναφορά για την επιλογή των προδιαγραφών του διακομιστή VPS.
Αυτή τη φορά, οι μετρήσεις πραγματοποιήθηκαν στους διακομιστές WEB/AP (Apache και Tomcat), αλλά ανατρέξτε στο παρακάτω άρθρο για μετρήσεις μόνο στον WEB (Apache).
Πίνακας περιεχομένων
1. μέτρηση
1-1. Περιβάλλον μέτρησης
Ακολουθεί το περιβάλλον στο οποίο θα γίνουν οι μετρήσεις.
■Πληροφορίες διακομιστή ενοικίασης
CPU | 2core |
---|---|
memory | 1GB |
SSD | 50GB |
■Πληροφορίες διακομιστή
OS | CentOS 7.4 64bit |
---|---|
Διακομιστής Web | Apache HTTP Server 2.4.41 |
Διακομιστής AP | Apache Tomcat 9.0.27 |
Διακομιστής DB | PostgreSQL 10.2 |
Java | OpenJDK 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".
Η έρευνα βασίζεται στην υπόθεση ότι κανένα άλλο λογισμικό δεν εκτελείται με οριακή απόδοση. Συνιστάται να επιλέξετε μια προδιαγραφή με λίγο περιθώριο, καθώς πρόκειται για μια οριακή τιμή.
Σας ευχαριστούμε που παρακολουθήσατε μέχρι το τέλος.
■INFORMATION
Κάντε κλικ εδώ για να μεταβείτε στην αρχική σελίδα ΠΛΗΡΟΦΟΡΙΕΣ.
■PROFILE
Κάντε κλικ εδώ για ένα προφίλ.
■Στοιχεία επικοινωνίας.
Για ερωτήσεις σχετικά με το άρθρο, παρακαλούμε επικοινωνήστε μαζί μας εδώ.