Τι να κάνετε αν κατά την εργασία με το nginx προκύψει σφάλμα όταν ξεπερνάτε τις 1024 συνδέσεις;
sobes.tech AI
Απάντηση από AI
Αυτό υποδεικνύει έναν περιορισμό στον αριθμό των ανοιχτών περιγραφέων αρχείων.
Λύσεις:
-
Αυξήστε το
worker_connectionsστη διαμόρφωση του Nginx:// Αυξήστε τον μέγιστο αριθμό συνδέσεων ανά επεξεργαστή εργασίας events { worker_connections 4096; // ή περισσότερο, ανάλογα με τις ανάγκες και τους πόρους } -
Αυξήστε το όριο των ανοιχτών αρχείων σε επίπεδο λειτουργικού συστήματος:
- Για την τρέχουσα συνεδρία χρήστη:
# Προσωρινά αυξήστε το όριο των ανοιχτών αρχείων ulimit -n 65536 - Για ολόκληρο το σύστημα (μόνιμα):
Επεξεργαστείτε το αρχείο
/etc/security/limits.conf. Προσθέστε γραμμές:(Αντικαταστήστε το# Ορίσματα συγκεκριμένου χρήστη nginx soft nofile 65536 nginx hard nofile 65536 # Εναλλακτικά, για όλους τους χρήστες # * soft nofile 65536 # * hard nofile 65536nginxμε το όνομα χρήστη που τρέχει το Nginx, αν είναι διαφορετικό.) Είναι απαραίτητο να επανεκκινήσετε το σύστημα ή να κάνετε αποσύνδεση και επανασύνδεση για να εφαρμοστούν οι αλλαγές, ή να εκτελέσετεsysctl -p.
- Για την τρέχουσα συνεδρία χρήστη:
-
Έλεγχος των παγκόσμιων ρυθμίσεων πυρήνα: Βεβαιωθείτε ότι το
fs.file-maxείναι αρκετά υψηλό.# Ελέγξτε την τρέχουσα τιμή cat /proc/sys/fs/file-max # Ορίστε μια νέα τιμή (προσωρινά) # sudo sysctl -w fs.file-max=100000 # Ορίστε μια νέα τιμή (μόνιμα) - επεξεργαστείτε το `/etc/sysctl.conf` # Προσθέστε τη γραμμή: fs.file-max = 100000 # Εφαρμόστε τις αλλαγές # sudo sysctl -p -
Βεβαιωθείτε ότι ο χρήστης του Nginx έχει δικαίωμα να ανοίγει τόσα πολλά αρχεία: Ελέγξτε υπό ποιον χρήστη τρέχει το Nginx και ποια όρια έχουν οριστεί για αυτόν. Αυτό σχετίζεται με το σημείο 2.
-
Επανεκκινήστε το Nginx: Μετά τις αλλαγές στη διαμόρφωση του Nginx ή στα συστημικά όρια, πρέπει να το επανεκκινήσετε.
# Φόρτωση ξανά του Nginx sudo systemctl reload nginx # Ή, αν δεν βοηθά # sudo systemctl restart nginx
Προτεραιότητα στην επίλυση:
- Ελέγξτε και αυξήστε το
worker_connections. - Ελέγξτε και αυξήστε τα όρια των περιγραφέων αρχείων για τον χρήστη του Nginx.
- Ελέγξτε και αυξήστε το παγκόσμιο όριο
fs.file-max. - Επανεκκινήστε το Nginx.
Είναι σημαντικό να θυμάστε ότι η αύξηση των ορίων πρέπει να είναι αιτιολογημένη και να σχετίζεται με τους διαθέσιμους πόρους του διακομιστή (μνήμη, CPU). Πολύ υψηλές τιμές μπορεί να οδηγήσουν σε αστάθεια του συστήματος.