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

Neel
la source

Réponses:

30

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

Xavier Lucas
la source
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.

Dave Holland
la source
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