Redis 服务常见的几个错误解决方案
问题一 :somaxconn
redis启动警告问题:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 这句话的翻译大概就是:对一个高负载的环境来说tcp设置128这个值,太小了。 这是我的理解,绝对的还需到官网理解。然后我们可以手动设置,或者设置永久值
临时解决方案
echo 512 > /proc/sys/net/core/somaxconn
长期解决方案
sudo vim /etc/sysctl.conf #net.core.somaxconn= 1024 然后执行sysctl -p 就可以永久消除这个warning
问题二:overcommit_memory
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
解决方案
sudo vim /etc/sysctl.conf #改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
问题三:Transparent Huge Pages
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 意思是:你使用的是透明大页,可能导致redis延迟和内存使用问题。 执行echo never > /sys/kernel/mm/transparent_hugepage/enabled修复该问题
临时解决方法
echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久解决方法
将其写入/etc/rc.local文件中 iftest -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled fi
问题四:bind: Cannot assign requested address
发现启动redis启动失败,看redis的日志问题,提示信息如下
Creating Server TCP listening socket ::1:6379: bind: Cannot assign requested address
解决方案
将 /etc/redis/redis.conf 文件里面的bind改成 bind 0.0.0.0
问题五:MISCONF Redis is configured to save RDB snapshots
MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk
解决方案
sudo vim /etc/redis/redis.conf # 将 stop-writes-on-bgsave-error 接着把后面的yes设置为no即可