Saya melihat kesalahan ini di bagian atas file redis.log saya:
File terbuka maksimum saat ini adalah 1024. maxclients telah dikurangi menjadi 4064 untuk mengimbangi ulimit rendah.
Saya telah mengikuti langkah-langkah ini ke surat (dan reboot):
Selain itu, saya melihat ini ketika saya menjalankan ulimit
:
ubuntu@ip-XX-XXX-XXX-XXX:~$ ulimit -n
65535
Apakah kesalahan ini bermuka dua? Jika tidak, langkah apa lagi yang perlu saya lakukan? Saya menjalankan redis 2.8.13 (ujung pohon) di Ubuntu LTS 14.04.1 (sekali lagi, ujung pohon).
Ini info pengguna:
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
Karena itu server berjalan sebagai ubuntu.
Inilah file limit.conf saya tanpa komentar:
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
Dan ini adalah output dari 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'
sebagai sudo
ubuntu@ip-10-102-154-226:~$ sudo sysctl -a| grep fs.file-max
fs.file-max = 1528687
Juga, saya melihat kesalahan ini di bagian atas file redis.log, tidak yakin apakah itu terkait. Masuk akal bahwa pengguna ubuntu tidak diizinkan untuk mengubah file max terbuka, tetapi mengingat ulimit tinggi saya telah mencoba untuk mengatur dia tidak perlu:
[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.
Saran lain untuk pengguna yang menemukan posting ini yang masalahnya tidak terkait dengan pam_limits.so. Dalam kasus saya, Redis diluncurkan melalui pengawas. Dalam hal ini, metode di mana pengawas beralih konteks pengguna menyebabkan sesi baru dijalankan dengan batas standar sistem, bukan yang saya konfigurasikan untuk pengguna.
Solusi dalam kasus itu ditemukan di sini . Singkatnya, Anda perlu mendefinisikan batas melalui ulimit -n sebagai bagian dari perintah startup di supervisord.
Contoh:
sumber
Serta meningkatkan batas file terbuka. Anda perlu meningkatkan maxclients di redis.conf Anda. Ini hanya 10.000 secara default.
sumber
Catatan untuk pengguna Ubuntu lainnya dengan masalah yang sama:
Jika Anda memulai Redis saat boot, f.ex melalui Pemula, Anda dapat mengatur batas ini dengan bait "limit".
Jadi untuk nofile:
limit nofile 4096 4096
sumber