nginx uLimit 'worker_connections dépasse la limite de ressources de fichiers ouverts: 1024'


15

Je continue de recevoir cette erreur nginx/error.loget ça me rend dingue:

8096 worker_connections exceed open file resource limit: 1024

J'ai essayé tout ce à quoi je peux penser et je n'arrive pas à comprendre ce qui limite nginx ici. Pouvez-vous dire ce qui me manque?

nginx.conf a ceci:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

J'ai changé Ulimit de mon système security/limits.confcomme ceci:

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

Il montrait toujours l'erreur. J'ai donc également essayé d'éditer /etc/default/nginxet ajouté cette ligne:

ULIMIT="-n 65535"

Il affiche toujours la même erreur. Impossible de comprendre ce qui limite la connexion de travail nginx à seulement 1024. Pouvez-vous me signaler?

J'ai Debian 7 + nginx

Réponses:


30

Mettre worker_rlimit_nofile 65535;en nginx.conf dans le contexte principal.


1
C'est ça! Cela l'a corrigé. Oh tu es un sauveur. Cela fonctionne maintenant même lorsque l'ULimit n'est pas configuré manuellement /etc/default/nginx file. Impressionnant. Merci @Xaviour
Neel

1
bravo Xavier.
Dave Holland

@Xavier, cela a supprimé le message d'erreur, mais pouvez-vous expliquer pourquoi cela fonctionne sans modifier ulimit comme mentionné dans la réponse ci-dessous? les recherches Google indiquent de changer ulimit dans limits.conf ou systcl.conf, mais aucun ne fonctionne pour moi.
Bsienn

2

Devenez l'utilisateur:

su - nginx

Vérifiez les limites:

ulimit -Hn
ulimit -Sn

Modifiez le nombre de fichiers que le système de fichiers vous permettra d'ouvrir:

vi /etc/sysctl.conf
fs.file-max = 70000

chargez vos modifications:

sysctl -p

Voyez si cela aide.


J'utilise init et je n'ai pas installé systemctl. Cela ferait-il une différence?
Neel

Lorsque je suis passé à l'utilisateur Nginx, ulimit -Hn s'affiche correctement ici. J'ai ensuite vérifié init.d/nginxet il vérifie si ULIMIT est défini dans le dossier par défaut (où il est déjà défini), puis il est censé définir cette valeur, mais il ne le fait pas:Check if the ULIMIT is set in /etc/default/nginx
Neel

Après avoir modifié file-max et dès que sysctl -pj'exécute ubuntu 18.04.2 se bloque, ouvre trop de fichiers et ne démarre pas, a dû supprimer le code en démarrage sécurisé pour redémarrer le système d'exploitation.
Bsienn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.