系统运输
这是最近在开发过程中遇到的问题,因为必须经常使用Redis作为中间查询操作,它会突然故障,服务中止,并抛出异常
2020-01-0909:34:17.848 error 25703---- [ xnio-2 task-83 ] o.z.p.spring.web.advice.advice trait:interer
org.spring framework.data.redis.redissystemexception:errorinexecution; nestedexceptionisio.lettuce.core.rediscommandexecutionexception:misconfiguredtosaverdbsnapshots、 butiscurrentlynotabletopersistondisk.commandsthatmaymodifythedatasetaredisabled.pleasecheckredislogsfordetailsaboutttttherrororrorod
atorg.spring framework.data.redis.connection.lettuce.lettuceexceptionconverter.convert (
atorg.spring framework.data.redis.connection.lettuce.lettuceexceptionconverter.convert (
atorg.spring framework.data.redis.connection.lettuce.lettuceexceptionconverter.convert (
atorg.spring framework.data.redis.passthroughexceptiontranslationstrategy.translate (
atorg.spring framework.data.redis.fallbackexceptiontranslationstrategy.translate (
atorg.spring framework.data.redis.connection.lettuce connection.convertlettuceaccessexception ( )
atorg.spring framework.data.redis.connection.lettucehashcommands.convertlettuceaccessexception (
atorg.spring framework.data.redis.connection.lettuce.lettucehashcommands.hset ( lettucehashcommands.Java:70 )
atorg.spring framework.data.redis.connection.defaultedredisconnection.hset ( defaultedredisconnection.Java:827
atorg.spring framework.data.redis.connection.defaultstringredisconnection.hset (
atorg.spring framework.data.redis.core.defaulthashoperations.lambda $ put $8( defaulthashoperations.Java:178
atorg.spring framework.data.redis.core.redis template.execute ( redis template.Java:224 ) )。
atorg.spring framework.data.redis.core.redis template.execute ( redis template.Java:184 ) )。
atorg.spring framework.data.redis.core.abstract operations.execute ( abstract operations.Java:95 ) )。
atorg.spring framework.data.redis.core.defaulthashoperations.put ( defaulthashoperations.Java:177 ) )。
atcom.SMP team.AAAA.service.impl.redisserviceimpl.setessession ( redisserviceimpl.Java:59 ) )。
atcom.SMP team.AAAA.service.impl.redisserviceimpl $ $ fastclassbyspringcglib $ $ 11b 51629.invoke ( generated ) ) )
atorg.spring framework.cglib.proxy.method proxy.invoke ( method proxy.Java:204 ) )。
是.
caused by:io.lettuce.core.rediscommandexecutionexception:misconfredisisconfiguredtosaverdbsnapshots, butiscurrentlynotabletopersistondisk.commandsthatmaymodifythedatasetaredisabled.pleasecheckredislogsfordetailsaboutttttherrororrorod
随后,通过redis-cli登录到redis服务器并检查情况,发现ping不通
( error ) misconfredisisconfiguredtosaverdbsnapshots,butiscurrentlynotabletopersistondisk.commandsthatmaymodifythedatasetasetttttttastion
这个提示及其友好,虽然很长,但我喜欢:)
Redis问题
misconfredisisconfiguredtosaverdbsnapshots,butiscurrentlynotabletopersistondisk.commandsthatmaymodifythedatasetaredisabled
Redis被配置为存储数据库快照,但当前无法永久保存到硬盘。 用于修改集合数据的命令不可用。 请检查Redis日志中的详细错误消息。
原因
如果强制关闭Redis快照,则无法将其永久化。 本质上是因为内存不足。 因此,需要相关的内存处理。
修改修复配置
更改快照备份的目录,并将快照重定向到其他目录
更改主机内存配置
解决方案1
通过将stop-writes-on-bgsave-error设置为no,直接关闭持久性快照的保存
127.0.0.1:6379 configsetstop-writes-on-BG save-errorno
这在生产中可能会出现一些问题。 但这种方法治标不治本,他只是让我们“无视”他。 需要了解bgsave失败的原因,例如当redis用于缓存或会话场景时
解决方案2
将备份的rdb文件重定向到目录
configsetdir/tmp/some/directory/other/than/var
CONFIG SET dbfilename temp.rdb
使用此命令后,必须确保bgsave_in_progress返回结果0
解决方案3
在内核运行期间动态更改内核运行参数
echo\\\&; quot; VM.overcommit_memory=1\\&; quot; /etc/sysctl.conf
sysctl vm.overcommit_memory=1
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn