Τι πρέπει να κάνω εάν ο διακομιστής Nginx έχει υψηλό φορτίο CPU και χρήση μνήμης διεργασιών;

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

Βλέποντας αυτή τη σκηνή, το κεφάλι σου ζεσταίνεται και δεν μπορείς να μην φωνάξεις: "Θεέ μου, ο διακομιστής θα εκραγεί, αυτό δεν σημαίνει ότι ο διακομιστής σου θα "τελειώσει", αλλά Nginx Χρειαζόμαστε να κάνετε μια ολοκληρωμένη βελτιστοποίηση!

Ανάλυση των αιτιών του υπερβολικού φορτίου Nginx

Τι πρέπει να κάνω εάν ο διακομιστής Nginx έχει υψηλό φορτίο CPU και χρήση μνήμης διεργασιών;

Πρώτα πρέπει να καταλάβουμε,Γιατί ο Nginx «εξαντλείται» ξαφνικά;Υπάρχουν πολλοί λόγοι για το πρόβλημα, μην φοβάστε, ας μάθουμε μαζί παρακάτω.

1. Παράλογη διαμόρφωση

Στο αρχείο διαμόρφωσης Nginx, το πιο σημαντικό σημείο είναι worker_processes. Αυτή η παράμετρος καθορίζει τον αριθμό των διεργασιών που ξεκίνησαν από το Nginx.

  • Εάν διαμορφώσετε πολύ λίγες διεργασίες εργασίας, το φορτίο της CPU θα αυξηθεί στα ύψη, εάν διαμορφώσετε πάρα πολλές, θα υπάρχει ανεπαρκής μνήμη.
  • Πρέπει να βρείτε ένα σημείο ισορροπίας, για παράδειγμα,Ορίστε το worker_processes σε 1 έως 2 φορές τον αριθμό των πυρήνων της CPU.
  • Εάν έχετε 4 πυρήνες, δοκιμάστε worker_processes 4 Ή ρυθμίστε το απευθείας σε auto.

2. Οι επισκέψεις αυξάνονται

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

3. Αντιμετώπισε κακόβουλες επιθέσεις

Το να είσαι «πολύ δημοφιλές» στο Διαδίκτυο δεν είναι πάντα καλό. Οι κακόβουλες επιθέσεις μπορεί να σε στοχεύουν ανά πάσα στιγμή. Εάν διαπιστώσετε ότι η χρήση της CPU είναι ασυνήθιστα υψηλή και η πηγή της IP του αιτήματος είναι ύποπτη, είναι πολύ πιθανό ο ιστότοπός σας να υποφέρει από επίθεση DDoS. Αυτή τη στιγμή,Πρέπει να αναπτύξετε ένα τείχος προστασίας ή να περιορίσετε τη συχνότητα πρόσβασης αμέσως, όπως η χρήση της τρέχουσας μονάδας περιορισμού που συνοδεύει το Nginx ή η δημιουργία μιας μαύρης λίστας IP.

Πώς να λύσετε το πρόβλημα της υψηλής χρήσης μνήμης της διαδικασίας Nginx;

Το ερώτημα λοιπόν είναι, γιατί η διαδικασία εργαζομένου Nginx καταλαμβάνει τόσους πολλούς πόρους; Πρέπει να ξεκινήσουμε με τη διαμόρφωση και να τη βελτιστοποιήσουμε βήμα προς βήμα.

Μέθοδος διαμόρφωσης

  1. Ανοίξτε το αρχείο διαμόρφωσης Nginx: Συνήθως, το κύριο αρχείο ρυθμίσεων του Nginx βρίσκεται στο /etc/nginx/nginx.conf.

  2. Στήνω worker_processes: Βρέθηκε στο αρχείο διαμόρφωσης events μπλοκ, ρυθμίσεις worker_processes αξία. αν όχι events μπλοκ, πρέπει να δημιουργήσετε ένα.

    nginx
    events {
    worker_connections 1024;
    use epoll;  # 或者适用于操作系统的其他事件模型
    }

1. Ορίστε σωστά το worker_connections

nginx worker_connections Η παράμετρος καθορίζει τον μέγιστο αριθμό συνδέσεων που μπορεί να χειριστεί κάθε διεργασία εργασίας. Εάν είναι πολύ μικρό, θα επηρεάσει την απόδοση συγχρονισμού, εάν είναι πολύ μεγάλο, μπορεί να καταναλώσει πάρα πολλούς πόρους.

Πώς να υπολογίσετε την κατάλληλη τιμή;

Αν υποθέσουμε ότι έχετε CPU 4 πυρήνων και 16 GB μνήμης RAM, ένα ασφαλές σημείο εκκίνησης είναι worker_connections 4096.

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

events {
    worker_connections 8192;
}

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

2. Προσαρμόστε το keepalive_timeout

Μια άλλη βασική παράμετρος για το Nginx να χειρίζεται αιτήματα είναι keepalive_timeout.

Αυτή η ρύθμιση καθορίζει πόσο καιρό μπορεί να διατηρηθεί η σύνδεση του πελάτη με τον διακομιστή.

Εάν ρυθμιστεί πολύ, θα καταλάβει πάρα πολλούς πόρους σύνδεσης..

Μπορείτε να προσπαθήσετε keepalive_timeout Ρυθμίστε τα 15 δευτερόλεπτα για να διατηρήσετε τη σύνδεση και να αποδεσμεύσετε πόρους.

keepalive_timeout 15;

3. Βελτιστοποίηση ορίων περιγραφής αρχείων

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

Εάν το Nginx χρειάζεται να επεξεργαστεί μεγάλο αριθμό αρχείων (όπως στατικούς πόρους), ενδέχεται να εμφανιστεί ένα σφάλμα από το Nginx, που θα σας προτρέπει "too many open files"

Μπορείτε να περάσετε worker_rlimit_nofile Αύξηση ορίου περιγραφής αρχείου, για παράδειγμα ορίστε στο 65535.

worker_rlimit_nofile 65535;

4. Ενεργοποίηση προσωρινής αποθήκευσης και gzip

Η προσωρινή αποθήκευση και η συμπίεση είναι δύο κλειδιά για τη βελτιστοποίηση της απόδοσης του ιστότοπου.

Ενεργοποιώντας τη λειτουργία προσωρινής αποθήκευσης του Nginx, οι στατικοί πόροι (όπως εικόνες και αρχεία JS) μπορούν να αποθηκευτούν προσωρινά στη μνήμη, μειώνοντας έτσι σημαντικά το φόρτο στον διακομιστή.

Επιπλέον, η ενεργοποίηση της λειτουργίας συμπίεσης gzip μπορεί να μειώσει τον όγκο των δεδομένων που μεταδίδονται και να βελτιώσει την ταχύτητα του ιστότοπου.

gzip on;
gzip_types text/plain application/javascript;

5. Αναλύστε τη χρήση πόρων Nginx

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

使用 top Ή htop Δείτε την κατανάλωση πόρων σε πραγματικό χρόνο μιας διαδικασίας,πέρασμα strace Παρακολούθηση κλήσεων συστήματος ή χρήση nmon Δημιουργήστε αναφορές απόδοσης. Μόνο με την πλήρη ανάλυση της πραγματικής λειτουργίας του Nginx μπορούμε να εκτελέσουμε πιο ακριβή συντονισμό.

总结

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

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

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

Θυμηθείτε, οποιεσδήποτε ερωτήσεις μπορούν να απαντηθούν απόΕπιστήμημεθόδους επίλυσής του, η βελτιστοποίηση της απόδοσης του διακομιστή δεν αποτελεί εξαίρεση.

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

Ελπίζω αυτό το άρθρο να σας ενέπνευσε, βιαστείτε και βελτιστοποιήστε το Nginx σας!

Ιστολόγιο Hope Chen Weiliang ( https://www.chenweiliang.com/ ) κοινοποιήθηκε "Φόρτωση CPU διακομιστή Nginx, η χρήση της μνήμης διεργασιών είναι υψηλή, τι πρέπει να κάνω;" 》, χρήσιμο για εσάς.

Καλώς ήρθατε να μοιραστείτε τον σύνδεσμο αυτού του άρθρου:https://www.chenweiliang.com/cwl-32093.html

Για να ξεκλειδώσετε περισσότερα κρυμμένα κόλπα🔑, καλώς ήρθατε στο κανάλι μας στο Telegram!

Κάντε share και like αν σας αρέσει! Τα share και τα likes σας είναι το συνεχές μας κίνητρο!

 

发表 评论

Η διεύθυνση email σας δεν θα δημοσιευτεί. 必填 项 已 用 * 标注

Μεταβείτε στην κορυφή