Yah, agak terlambat untuk posting ini, tetapi karena saya hanya menghabiskan banyak waktu (sepanjang malam) untuk mengkonfigurasi server redis baru 3.0.6 di ubuntu 16.04. Saya pikir saya harus menuliskan bagaimana saya melakukannya sehingga orang lain tidak perlu membuang waktu mereka...
Untuk server redis yang baru diinstal, Anda mungkin akan melihat masalah berikut dalam file log redis yaitu /var/log/redis/redis-server.log
Berkas Terbuka Maksimum
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'.
Saya telah melihat banyak posting yang meminta Anda untuk memodifikasi
/etc/security/limits.conf
redis soft nofile 10000
redis hard nofile 10000
atau
/etc/sysctl.conf
fs.file-max = 100000
Itu mungkin berfungsi di ubuntu 14.04, tetapi tentu saja tidak berfungsi di ubuntu 16.04. Saya kira ini ada hubungannya dengan perubahan dari pemula ke systemd, tapi saya bukan ahli kernel linux!
Untuk memperbaikinya, Anda harus melakukannya systemd cara
/etc/systemd/system/redis.service
[Service]
...
User=redis
Group=redis
# should be fine as long as you add it under [Service] block
LimitNOFILE=65536
...
Maka Anda harus memuat ulang daemon dan memulai ulang layanan
sudo systemctl daemon-reload
sudo systemctl restart redis.service
Untuk memeriksa apakah berhasil, coba cat batas proc
cat /run/redis/redis-server.pid
cat /proc/PID/limits
dan Anda akan melihat
Max open files 65536 65536 files
Max locked memory 65536 65536 bytes
Pada tahap ini, file terbuka maksimum telah diselesaikan.
Koneksi Maksimum Soket
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.
Memori 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.
Karena keduanya terkait, kami akan menyelesaikannya sekaligus.
sudo vi /etc/sysctl.conf
# Add at the bottom of file
vm.overcommit_memory = 1
net.core.somaxconn=1024
Sekarang agar konfigurasi ini berfungsi, Anda perlu memuat ulang konfigurasi
sudo sysctl -p
Halaman Besar Transparan
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.
Untuk mengatasi ini secara permanen, ikuti saran log, dan ubah 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
Ini mengharuskan Anda untuk me-boot ulang , buat cadangan data Anda atau lakukan apa pun yang Anda perlukan sebelum benar-benar melakukannya!!
sudo reboot
Sekarang periksa log redis Anda lagi, Anda seharusnya memiliki server redis tanpa kesalahan atau peringatan.