问题描述:springboot连接redis,隔几分钟就断开,连接失败,等个几秒钟在连接就又可以了
第一个警告:The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
第二个警告: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.
第三个警告:you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix thisissue 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 thesetting after a reboot. Redis must be restarted after THP is disabled.
第一个和第二个警告,修改linux服务器上配置文件,/etc/sysctl.conf
新增两个属性,下图
保存,退出,执行sysctl -p
生效配置
第三个警告处理:将echo never > /sys/kernel/mm/transparent_hugepage/enabled
添加到/etc/rc.local
中
然后执行source /etc/rc.local
生效配置
报错4,MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.
编辑redis.conf
文件,把里面stop-writes-on-bgsave-error = no
此时改完服务器上的报错,在测试redis连接,如果还是隔几分钟就断开,就开始找代码的原因:
原配置文件
现在配置文件:
原先是自动装载配置文件,RedisTemplate
自动集成RedisConnectionFactory
属性,RedisConnectionFactory
会自动读取配置yml文件的内容,所以思路是自定义对象RedisConnectionFactory
新增一些属性
然后用手动生成的RedisConnectionFactory
对象生成RedisTemplate
即可