2016-04-27 5 views
3

1167: M 26 Apr 13: 00: 34.667 # Redis kann maximale geöffnete Dateien wegen eines Betriebssystemfehlers nicht auf 10032 setzen: Operation nicht erlaubt. 1167: M 26 Apr 13: 00: 34.667 # Die aktuell maximal geöffneten Dateien sind 4096. maxclients wurde auf 4064 reduziert, um niedrige ulimit zu kompensieren. Wenn Sie höhere Max Clients benötigen, erhöhen Sie 'ulimit -n'. 1167: M 26 Apr 13: 00: 34.685 # Creating Server TCP-Empfangsbuchse 192.34.62.56: 6379: Name oder Dienst unbekannt 1135: M 26 Apr 20: 34: 24.308 # Sie haben maxclients von 10000 angefordert, die mindestens erforderlich sind 10032 maximale Dateideskriptoren. 1135: M 26 Apr 20: 34: 24.309 # Redis kann wegen eines Betriebssystemfehlers maximal geöffnete Dateien nicht auf 10032 setzen: Operation nicht erlaubt. 1135: M 26 Apr 20: 34: 24.309 # Momentane maximale offene Dateien sind 4096. maxclients wurde auf 4064 reduziert, um niedrige ulimit zu kompensieren. Wenn Sie höhere Max Clients benötigen, erhöhen Sie 'ulimit -n'. 1135: M 26 Apr 20: 34: 24.330 # Server TCP-Empfangsbuchse 192.34.62.56 erstellen: 6379: Name oder Dienst nicht bekanntWarum kann redis nicht maximal geöffnete Datei setzen

Antwort

4

Redis wird niemals die maximal geöffneten Dateien ändern.

Dies ist eine Betriebssystemkonfiguration und sie kann auch pro Benutzer konfiguriert werden. Der Fehler ist beschreibend und sagt Ihnen: „Erhöhung‚ulimit -n‘“

Sie auf diesem Blog-Eintrag verweisen können, wie die maximal geöffneten Dateien Deskriptoren zu erhöhen: http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/

0

Sie müssen nur diesen Befehl in der Konsole :

sudo ulimit -n 65535 
+0

Befehl nicht gefunden am 16.04 Ubuntu – user1735921

5

Nun, es ist ein bisschen für diesen Beitrag zu spät, aber da ich habe gerade viel Zeit (die ganze Nacht) 16.04 einen neuen redis Server 3.0.6 auf ubuntu zu konfigurieren. Ich denke, ich sollte nur notieren, wie ich es mache, damit andere ihre Zeit nicht verschwenden müssen ...

Für einen neu installierten Redis-Server werden Sie wahrscheinlich die folgenden Probleme in der Redis-Protokolldatei sehen, die ist /var/log/redis/redis-server.log

Maximum Open Files

3917:M 16 Sep 21:59:47.834 # You requested maxclients of 10000 requiring at least 10032 max file descriptors. 
3917:M 16 Sep 21:59:47.834 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted. 
3917:M 16 Sep 21:59:47.834 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'. 

ich viele Beiträge, die Sie gesehen haben, sagen zu modifizieren

/etc/security/limits.conf 
redis soft nofile 10000 
redis hard nofile 10000 

oder

/etc/sysctl.conf 
fs.file-max = 100000 

, die in Ubuntu 14.04, aber es ist sicherlich nicht funktioniert in Ubuntu 16.04 funktionieren könnte. Ich denke, es hat etwas mit dem Wechsel von Upstart zu Systemd zu tun, aber ich bin kein Experte für Linux Kernel!

dies zu beheben Sie den systemd Weg

/etc/systemd/system/redis.service 
[Service] 
... 
User=redis 
Group=redis 
# should be fine as long as you add it under [Service] block 
LimitNOFILE=65536 
... 

Dazu Reload-Dämon muss zu tun haben, und starten Sie den Dienst

sudo systemctl daemon-reload 
sudo systemctl restart redis.service 

Um zu überprüfen, ob es funktioniert, versuchen Sie, cat proc limits

cat /run/redis/redis-server.pid 
cat /proc/PID/limits 

und Sie werden

Max open files   65536    65536    files  
Max locked memory   65536    65536    bytes 

In diesem Stadium sehen, die maximale offene Datei ist gelöst.

Maximale Buchse Anschluss

2222:M 16 Sep 20:38:44.637 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 

Speicher Overcommit

2222:M 16 Sep 20:38:44.637 # Server started, Redis version 3.0.6 
2222:M 16 Sep 20:38:44.637 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 

Da diese beiden verwandt sind, werden wir es auf einmal lösen.

sudo vi /etc/sysctl.conf 

# Add at the bottom of file 
vm.overcommit_memory = 1 
net.core.somaxconn=1024 

nun für diese Konfigurationen zu arbeiten, müssen Sie die Konfigurations

sudo sysctl -p 

Transparent Huge Pages

1565:M 16 Sep 22:48:00.993 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. 

Um dauerhaft zu lösen diese neu zu laden, folgen dem Vorschlag des Protokoll und ändern rc.local

sudo vi /etc/rc.local 

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then 
    echo never > /sys/kernel/mm/transparent_hugepage/enabled 
fi 

Dies erfordert Sie Neustart, sichern Sie Ihre Daten oder tun Sie alles, was Sie brauchen, bevor Sie es tatsächlich tun!

Jetzt überprüfen Sie redis Log erneut, sollten Sie einen Redis-Server ohne Fehler oder Warnungen haben.

Verwandte Themen