Wat te doen als er een fout optreedt bij het werken met nginx wanneer meer dan 1024 verbindingen worden overschreden?
sobes.tech AI
Antwoord van AI
Dit duidt op een beperking in het aantal geopende bestandsdescriptoren.
Oplossingen:
-
Verhoog
worker_connectionsin de Nginx-configuratie:// Verhoog het maximale aantal verbindingen per worker-proces events { worker_connections 4096; // of meer, afhankelijk van de behoeften en bronnen } -
Verhoog de limiet van geopende bestanden op systeemniveau:
- Voor de huidige gebruikerssessie:
# Tijdelijk verhogen van de limiet van geopende bestanden ulimit -n 65536 - Voor het hele systeem (permanent):
Bewerk het bestand
/etc/security/limits.conf. Voeg regels toe:(Vervang# Gebruikersspecifieke limieten nginx soft nofile 65536 nginx hard nofile 65536 # Alternatief, voor alle gebruikers # * soft nofile 65536 # * hard nofile 65536nginxdoor de gebruikersnaam waaronder Nginx draait, indien anders.) Het is nodig om het systeem opnieuw op te starten of opnieuw in te loggen om de wijzigingen toe te passen, of voersysctl -puit.
- Voor de huidige gebruikerssessie:
-
Controleer globale kernel-instellingen: Zorg dat
fs.file-maxhoog genoeg is.# Controleer de huidige waarde cat /proc/sys/fs/file-max # Stel een nieuwe waarde in (tijdelijk) # sudo sysctl -w fs.file-max=100000 # Stel een nieuwe waarde in (permanent) - bewerk /etc/sysctl.conf # Voeg de regel toe: fs.file-max = 100000 # Pas de wijzigingen toe # sudo sysctl -p -
Zorg dat de Nginx-gebruiker toestemming heeft om zoveel bestanden te openen: Controleer onder welke gebruiker Nginx draait en welke limieten voor die gebruiker zijn ingesteld. Dit is gerelateerd aan punt 2.
-
Herstart Nginx: Na het aanbrengen van wijzigingen in de Nginx-configuratie of systeemlimieten, moet je Nginx herstarten.
# Herlaad Nginx sudo systemctl reload nginx # Of, als dat niet helpt # sudo systemctl restart nginx
Prioriteit in de oplossing:
- Controleer en verhoog
worker_connections. - Controleer en verhoog de limieten van bestandsdescriptoren voor de Nginx-gebruiker.
- Controleer en verhoog de globale limiet
fs.file-max. - Herstart Nginx.
Het is belangrijk om te onthouden dat het verhogen van limieten gerechtvaardigd moet zijn en in overeenstemming met de beschikbare bronnen van de server (geheugen, CPU). Te hoge waarden kunnen leiden tot instabiliteit van het systeem.