Ich sehe diesen Fehler oben in meiner redis.log-Datei:
Derzeit sind maximal 1024 Dateien geöffnet. Maxclients wurde auf 4064 reduziert, um ein niedriges Ulimit auszugleichen.
Ich habe diese Schritte genauestens befolgt (und neu gestartet):
Außerdem sehe ich das, wenn ich renne ulimit
:
ubuntu@ip-XX-XXX-XXX-XXX:~$ ulimit -n
65535
Ist dieser Fehler spezifisch? Wenn nicht, welche anderen Schritte muss ich ausführen? Ich verwende redis 2.8.13 (Spitze des Baumes) unter Ubuntu LTS 14.04.1 (wieder Spitze des Baumes).
Hier ist die Benutzerinfo:
ubuntu@ip-XX-XXX-XXX-XXX:~$ ps aux | grep redis
root 1027 0.0 0.0 66328 2112 ? Ss 20:30 0:00 sudo -u ubuntu /usr/local/bin/redis-server /etc/redis/redis.conf
ubuntu 1107 19.2 48.8 7629152 7531552 ? Sl 20:30 2:21 /usr/local/bin/redis-server *:6379
Der Server läuft daher als Ubuntu.
Hier sind meine limits.conf-Datei ohne Kommentare:
ubuntu@ip-XX-XXX-XXX-XXX:~$ cat /etc/security/limits.conf | sed '/^#/d;/^$/d'
ubuntu soft nofile 65535
ubuntu hard nofile 65535
root soft nofile 65535
root hard nofile 65535
Und hier ist die Ausgabe von sysctl fs.file-max:
ubuntu@ip-XX-XXX-XXX-XXX:~$ sysctl -a| grep fs.file-max
sysctl: permission denied on key 'fs.protected_hardlinks'
sysctl: permission denied on key 'fs.protected_symlinks'
fs.file-max = 1528687
sysctl: permission denied on key 'kernel.cad_pid'
sysctl: permission denied on key 'kernel.usermodehelper.bset'
sysctl: permission denied on key 'kernel.usermodehelper.inheritable'
sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key'
als sudo
ubuntu@ip-10-102-154-226:~$ sudo sysctl -a| grep fs.file-max
fs.file-max = 1528687
Außerdem wird dieser Fehler oben in der Datei redis.log angezeigt. Ich bin mir nicht sicher, ob er damit zusammenhängt. Es ist sinnvoll, dass der Ubuntu-Benutzer maximal geöffnete Dateien nicht ändern darf, aber angesichts der hohen Grenzwerte, die ich festgelegt habe, sollte er Folgendes nicht benötigen:
[1050] 23 Aug 21:00:43.572 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[1050] 23 Aug 21:00:43.572 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
Ein weiterer Vorschlag für Benutzer, die diesen Beitrag finden, dessen Problem nicht mit pam_limits.so zusammenhängt. In meinem Fall wurde Redis über Supervisord gestartet. In diesem Fall führte die Methode, mit der Supervisord die Benutzerkontexte wechselte, dazu, dass die neue Sitzung mit den Systemstandardgrenzen ausgeführt wurde, nicht mit denen, die ich für den Benutzer konfiguriert hatte.
Die Lösung in diesem Fall wurde hier gefunden . Kurz gesagt, Sie müssen das Limit über ulimit -n als Teil des Startbefehls in Supervisord definieren.
Beispiel:
quelle
Sowie das Limit für geöffnete Dateien zu erhöhen. Sie müssen maxclients in Ihrer redis.conf erhöhen. Standardmäßig sind es nur 10000.
quelle
Hinweis für andere Ubuntu-Benutzer mit einem ähnlichen Problem:
Wenn Sie Redis beim Booten starten, z. B. über Upstart, können Sie dieses Limit mit der Zeilengruppe "limit" festlegen.
Also für nofile:
limit nofile 4096 4096
quelle