Apache Benchmark + GNUPlot: Μετρήστε και γράφετε την απόδοση του διακομιστή ιστού σας

Δεν έχει σημασία αν χρησιμοποιείται nginx, Apache, Lighttpd ή αλλιώς, οποιοσδήποτε διαχειριστής δικτύου που διαθέτει διακομιστή ιστού θα θέλει κάποια στιγμή να μάθει πόσο γρήγορα ο διακομιστής ιστού αποκρίνεται σε έναν συγκεκριμένο αριθμό ερωτημάτων.

Managed-Services-Server-Management-e1368625038693

Σημείο αναφοράς Apache + GNUPlot

Αυτή τη φορά θα χρησιμοποιήσουμε ένα εργαλείο που ονομάζεται Δείκτης αναφοράς Apache, το οποίο αν και έχει το «apache» στο όνομά του, ΔΕΝ είναι μόνο για τη μέτρηση της απόδοσης του Apache, αλλά μπορεί επίσης να χρησιμοποιηθεί για το Nginx και άλλα. Στην πραγματικότητα, θα το χρησιμοποιήσω για να μετρήσω την απόδοση του nginx.

Θα χρησιμοποιήσουμε επίσης GNUPlot, το οποίο θα μας βοηθήσει να δημιουργήσουμε γραφήματα σαν αυτά με μερικές γραμμές:

αποτελέσματα

Εγκατάσταση του Apache Benchmark και του GNUPlot

Το Apache Benchmark είναι ένα εργαλείο που μπορούμε να χρησιμοποιήσουμε μετά την εγκατάσταση του πακέτου Apache, το GNUPlot θα είναι διαθέσιμο μετά την εγκατάσταση του πακέτου με το ίδιο όνομα. Λοιπόν ...

Σε διανομές όπως το Debian, το Ubuntu ή παρόμοια:

sudo apt-get install apache2 gnuplot

Σε διανομές όπως το ArchLinux ή παράγωγα:

sudo pacman -S apache gnuplot

Χρειάζεται μόνο να εγκαταστήσουμε το πακέτο Apache, δεν χρειάζεται να το ξεκινήσουμε ή να διαμορφώσουμε οτιδήποτε άλλο, αρκεί η εγκατάσταση του.

Χρησιμοποιώντας το Apache Benchmark

Αυτό που θα κάνουμε είναι να στείλουμε έναν συγκεκριμένο αριθμό αιτημάτων (100) σε ομάδες πολλών (από 20 έως 20) σε έναν συγκεκριμένο ιστότοπο. Θα αποθηκεύσουμε το αποτέλεσμα σε ένα αρχείο .csv (result.csv) και στη συνέχεια θα το επεξεργαστούμε με το GNUPloit, η γραμμή θα ήταν:

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

Είναι πολύ σημαντικό να τοποθετήσετε το τελικό / στη διεύθυνση URL του ιστότοπου που θα μετρηθεί.

Αυτό είναι το αποτέλεσμα ή το αρχείο καταγραφής που μου δείχνει όταν δοκιμάζω έναν ιστότοπο στο δίκτυό μου:

Αυτό είναι το ApacheBench, Έκδοση 2.3 <$ Αναθεώρηση: 1638069 $> Πνευματικά δικαιώματα 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ με άδεια χρήσης στο Ίδρυμα λογισμικού Apache, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (κάντε υπομονή) ..... ολοκληρώθηκε

Λογισμικό διακομιστή: nginx Διακομιστής Όνομα κεντρικού υπολογιστή: gutl.jovenclub.cu Θύρα διακομιστή: 80

Διαδρομή εγγράφου: /
Μήκος εγγράφου: 206 bytes Επίπεδο συνάφειας: 20 Χρόνος που απαιτείται για τις δοκιμές: 0.101 δευτερόλεπτα Πλήρεις αιτήσεις: 100 Αποτυχημένα αιτήματα: 27 (Σύνδεση: 0, Λήψη: 0, Μήκος: 27, Εξαιρέσεις: 0) Απαντήσεις εκτός 2xx: 73 Σύνολο μεταφερόμενων: 1310933 bytes Μεταφέρθηκε HTML: 1288952 bytes
Αιτήματα ανά δευτερόλεπτο: 993.24 [# / sec] (μέσος όρος)
Χρόνος ανά αίτημα: 20.136 [ms] (μέσος όρος) Χρόνος ανά αίτημα: 1.007 [ms] (μέσος όρος, σε όλα τα ταυτόχρονα αιτήματα) Ρυθμός μεταφοράς: 12715.49 [Kbytes / sec] που ελήφθησαν Χρόνοι Σύνδεσης (ms) median max Σύνδεση: 0 1 0.2 1 1 Επεξεργασία: 1 17 24.8 4 86 Αναμονή: 1 15 21.5 4 76 Σύνολο: 1 18 24.8 5 87 Ποσοστό των αιτημάτων που υποβλήθηκαν εντός συγκεκριμένου χρόνου (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (το μεγαλύτερο αίτημα)

Έχω σημειώσει με κόκκινο χρώμα αυτό που θεωρώ το πιο σημαντικό πράγμα, το οποίο ήταν λίγο πολύ:

  1. Δεδομένα του διακομιστή που δοκιμάζουμε, καθώς και το εν λόγω URL.
  2. Αριθμός αιτημάτων ανά δευτερόλεπτο.
  3. Πόσα χιλιοστά του δευτερολέπτου χρειάστηκε ο διακομιστής για να ανταποκριθεί στο αίτημα που χρειάστηκε το μεγαλύτερο χρονικό διάστημα, δηλαδή αυτό που χρειάστηκε το μεγαλύτερο χρονικό διάστημα για να απαντηθεί.

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

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

Άλλες χρήσιμες επιλογές ή παραμέτρους συγκριτικής αξιολόγησης Apache:

-k -H 'Αποδοχή-κωδικοποίηση: gzip, deflate' : Με αυτό το ab θα αποδεχτεί την προσωρινή μνήμη και τη συμπίεση που έχει διαμορφώσει ο διακομιστής, οπότε οι χρόνοι θα είναι χαμηλότεροι.

-f urls.txt : Έτσι, αντί να δοκιμάζει μόνο το ευρετήριο του ιστότοπου, θα πραγματοποιεί δοκιμές στις διευθύνσεις URL που καθορίζουμε σε αυτό το αρχείο.

Τέλος πάντων ... ρίξτε μια ματιά άντρα αμπ για εσένα να δεις.

Εμφάνιση του αποτελέσματος σε γράφημα:

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

Στον ίδιο φάκελο όπου έχουμε το αρχείο results.csv (θυμηθείτε, μόλις δημιουργήσαμε με την παραπάνω εντολή) πρόκειται να δημιουργήσουμε ένα αρχείο που ονομάζεται gnuplot.p:

nano plot.p

Σε αυτό θα βάλουμε τα εξής:

σετ τερματικού png μέγεθος 600 σετ εξόδου "αποτελέσματα.png"ορισμός τίτλου"100 αιτήσεων, 20 ταυτόχρονες αιτήσεις "καθορισμένος λόγος μεγέθους 0.6 σετ πλέγματος και σετ xlabel"αιτήσεων"ορίστε ylabel"χρόνος απόκρισης (ms)"οικόπεδο"αποτελέσματα.csv"χρησιμοποιώντας 9 ομαλές διακρίσεις με τίτλο γραμμών"gutl.jovenclub.cu"

Έχω δείξει με κόκκινο χρώμα τι πρέπει πάντα να ελέγχετε. Δηλαδή και από πάνω προς τα κάτω:

  1. Όνομα του αρχείου εικόνας που θα δημιουργηθεί
  2. Αριθμός συνολικών και ταυτόχρονων αιτημάτων.
  3. Όνομα του αρχείου που μόλις δημιουργήσαμε.
  4. Τομέας στον οποίο εργαζόμαστε.

Μόλις το βάλουμε, αποθηκεύστε και βγείτε (Ctrl + O και στη συνέχεια Ctrl + X), θα εκτελέσουμε τα εξής:

gnuplot plot.p

Και voila, που θα δημιουργήσει το γράφημα με το επιθυμητό όνομα, το δικό μου είναι:

αποτελέσματα2

Το τέλος!

Το Apache Benchmark έχει πολύ περισσότερες επιλογές, υπάρχουν επίσης πολλοί συνδυασμοί που μπορούμε να χρησιμοποιήσουμε για να κάνουμε τη δοκιμή απόδοσης ακόμη πιο ολοκληρωμένη.

Αλλά, αυτό ήταν τα βασικά 😉

Απολαύστε το!


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Φρανσίσκο dijo

    Ενδιαφέρον σημείο αναφοράς, δεν ήξερα για το gnuplot, είναι δυνατόν να τροποποιήσετε το στυλ της εξόδου; Λέω για μια επίσημη έκθεση.

    Χαιρετίσματα από την Χιλή.

    1.    KZKG ^ Γκάρα dijo

      Ναι, υπάρχουν πολλές διαμορφώσεις στο διαδίκτυο για το gnuplot, αναζητήστε το Google για να δείτε αν βρίσκετε αρκετά σοβαρό ή επαγγελματικό για να το χρησιμοποιήσετε, γιατί αυτό είναι το γούστο όλων 🙂

  2.   Wolf119 dijo

    Ummm πρόκειται να το δοκιμάσω τώρα σε έναν εικονικό διακομιστή apache που τρέχω για να δω πώς συμβαίνει αυτό, σε σχέση με το GUTL, καθώς ενεργοποιείται πολύ γρήγορα από 80 αιτήματα, σωστά; Ας δούμε ότι 100 ms δεν Δεν είναι τίποτα, αλλά το υψηλό που δίνει για 10 ακόμη αιτήματα σε σύγκριση με 70 έως 80 με 80 έως 90 τραβάει την προσοχή μου

    1.    KZKG ^ Γκάρα dijo

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

  3.   Τσάρλι Μπράουν dijo

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

    1.    KZKG ^ Γκάρα dijo

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

  4.   Adolfo dijo

    Γεια σας, περνάω πάντα το χρόνο μου διαβάζοντας αυτό το blog, αλλά δεν έχω σχολιάσει ποτέ κανένα άρθρο και αυτό φαίνεται σαν μια καλή ευκαιρία.
    Αυτό που θέλω να μοιραστώ μαζί σας είναι ότι αυτός ο τύπος γραφήματος μπορεί να παρερμηνευθεί, επειδή το Apache Bench ταξινομεί το αποτέλεσμα χρησιμοποιώντας ttime (συνολικός χρόνος) αντί για διαδοχικό χρόνο. Παρόλο που τα δεδομένα είναι αλήθεια, το γράφημα πιθανώς δεν δείχνει αυτό που θέλουμε.
    Εδώ αφήνω το σύνδεσμο όπου το διάβασα.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Χαιρετισμούς.

  5.   Hugo dijo

    Το Apache Benchmark δεν είναι το καλύτερο εργαλείο για τη μέτρηση της απόδοσης των διακομιστών HTTP σε υπολογιστές με πολλαπλούς πυρήνες, επιπλέον, μόνο 100 αιτήματα με 20 ταυτόχρονες συνδέσεις είναι μια πολύ αδύναμη δοκιμή, κάτι πιο ρεαλιστικό θα ήταν 1,000 ή 10,000 αιτήματα με 100 ταυτόχρονες συνδέσεις (είναι γνωστό ότι το Nginx είναι μία από τις εφαρμογές που μπορούν να εξυπηρετήσουν περισσότερα από 10,000 αιτήματα ανά δευτερόλεπτο) και γι 'αυτό είναι καλύτερο να χρησιμοποιήσετε ένα εργαλείο όπως το weighttp, το οποίο έχει σχεδιαστεί για υπολογιστές πολλαπλών πυρήνων και χρησιμοποιεί epoll που είναι ταχύτερο, σε αντίθεση με το Apache Bench που χρησιμοποιεί ένα μόνο νήμα και έναν λιγότερο αποτελεσματικό μηχανισμό χειρισμού συμβάντων.

    Για να φτάσω στο σημείο μου, υποθέτοντας ότι ο διακομιστής έχει μόνο 4 πυρήνες:

    weighttp -n 10000 -c 100 -t 4 -k "http://our-web-site.com/"

  6.   πίστη dijo

    Γεια σε όλους,
    Όταν σχεδιάζω το γράφημα (από το CSV) με το gnuplot μου δίνει το ακόλουθο σφάλμα, μπορείτε να μου πείτε πώς να το λύσω;

    "Plot.p", γραμμή 8: προειδοποίηση: Παράλειψη αρχείου δεδομένων χωρίς έγκυρα σημεία

    γραφική παράσταση «graph.csv» χρησιμοποιώντας 9 ομαλές διακρίσεις με γραμμές τίτλου «AB - localhost / web»
    ^
    "Plot.p", γραμμή 8: x εύρος δεν είναι έγκυρη

    Με το gnuplot, μπορώ επίσης να δημιουργήσω σελίδες HTML;