Υπολογίστε τα proxy sockets του NGINX πριν αυξήσετε το worker_connections
Μια σύνδεση μέσω proxy χρησιμοποιεί συνήθως τόσο socket πελάτη όσο και upstream· διακρίνετε το όριο συνδέσεων του worker από το όριο file descriptor της υπηρεσίας.
Μια μακρόβια σύνδεση μέσω proxy καταλαμβάνει συνήθως δύο sockets: του πελάτη και του upstream. Το worker_connections μετρά και τις δύο πλευρές. Επομένως ο πολλαπλασιασμός του με το worker_processes δεν εγγυάται χωρητικότητα για τους χρήστες του proxy.
Όταν αποτυγχάνουν συνδέσεις, ακολουθήστε το όριο που αναφέρεται:
| Ένδειξη | Ρύθμιση ή κατάσταση διεργασίας προς έλεγχο |
|---|---|
| εξάντληση του worker_connections | Ο προϋπολογισμός συνδέσεων του worker, μαζί με τα upstream sockets |
| Μήνυμα του λειτουργικού «Πάρα πολλά ανοιχτά αρχεία» | Το όριο file descriptor που κληρονομεί η πραγματική διεργασία της υπηρεσίας |
Τα sockets ακρόασης, τα logs και άλλα ανοιχτά αρχεία καταναλώνουν επίσης descriptors. Η επαναχρησιμοποίηση συνδέσεων και η μίξη κίνησης αλλάζουν τη σχέση μεταξύ χρηστών και sockets.
Το worker_rlimit_nofile προσαρμόζει τα όρια του worker σύμφωνα με τα δικαιώματα του περιβάλλοντος. Μια μονάδα systemd μπορεί να ορίσει το LimitNOFILE· το ulimit ενός διαδραστικού shell δεν αλλάζει την εκτελούμενη υπηρεσία.
Διαστασιολογήστε τα όρια με βάση το φόρτο εργασίας και ελέγξτε ποιος τα καταναλώνει. Μη αναμενόμενοι πελάτες ή επανειλημμένα αποτυχημένες upstream συνδέσεις μπορούν να εξαντλήσουν ένα προηγουμένως επαρκές όριο. Μεγαλύτερος αριθμός διεργασιών ή όριο μνήμης δεν διορθώνει την έλλειψη descriptors.