在高负载下,我在RHELLinuxVM上遇到服务器故障,当服务器执行BGSAVE。这个问题不会发生在物理盒子中。在VM中修复此问题的最佳解决方案是什么?我们正在使用RDB转储并禁用AOF。$uname-aLinuxakm2.6.18-238.5.1.el5#1SMP2011年2月21日星期一05:52:39ESTx86_64x86_64x86_64GNU/LinuxRedis版本:2.2.12 最佳答案 您是否遇到高内存负载?当Redis执行BGSAVE时,它会fork进程。这有效地使其占用的内存量增加了一倍。如果这导致你的盒子交换
我更多的是将Redis用作临时存储,但有些字段我想持久化,所以我想使用RDB。失去几分钟不会受到伤害。但是,我注意到有时我的服务器上会出现较大的IO等待峰值,我相信这是在进行RDB保存时发生的。我发现手动运行的时候有两个命令,BGSAVE和SAVE。它们做同样的事情,但BGSAVE允许后台保存以确保redis不会阻止任何新的写入/读取。用于保存的配置文件包含类似以下内容的行:save101000save100500这是字面上的意思是它正在使用SAVE命令吗?如果是这样,我可以用bgsave替换它并获得我预期/需要的结果吗? 最佳答案
我更多的是将Redis用作临时存储,但有些字段我想持久化,所以我想使用RDB。失去几分钟不会受到伤害。但是,我注意到有时我的服务器上会出现较大的IO等待峰值,我相信这是在进行RDB保存时发生的。我发现手动运行的时候有两个命令,BGSAVE和SAVE。它们做同样的事情,但BGSAVE允许后台保存以确保redis不会阻止任何新的写入/读取。用于保存的配置文件包含类似以下内容的行:save101000save100500这是字面上的意思是它正在使用SAVE命令吗?如果是这样,我可以用bgsave替换它并获得我预期/需要的结果吗? 最佳答案
上下文我们有一个备份脚本,可以备份多个redis-server实例。我们选择了以下方式来备份一个redis-server实例:启动一个BGSAVE定期轮询INFOPersistence(和rdb_bgsave_in_progress)以查看BGSAVE是否已完成检查rdb_last_bgsave_status看看是否一切顺利昨天,出了点问题(磁盘已满)。Redis日志中充分报告了此错误,因此通过人工干预,我们能够快速找到原因。然而,查看redisapi,我只看到通用的:#Persitence...rdb_last_bgsave_status:err指示一般错误的行,我看不出自动脚本如何
在Stackexchange客户端中是否有BGSAVE的等效命令?如果没有,那么我该如何实现同样的目标? 最佳答案 AFAIK你可以这样做:ConnectionMultiplexer.Connect("host").GetServer("host").Save(SaveType.BackgroundSave); 关于redis-Redis的BGSAVE命令等效的StackExchange.Redis方法名称是什么,我们在StackOverflow上找到一个类似的问题:
全部:这是我的服务器内存信息,带有“free-m”totalusedfreesharedbufferscachedMem:6443349259151740331-/+buffers/cache:4922415209Swap:81971848012我的redis-server已经用了46G内存,剩下差不多15G内存据我所知,fork是写时复制,当有15G空闲内存时它应该不会失败,这足以malloc必要的内核结构。另外redis-server使用42G内存时,bgsave可以,fork也可以。是否有任何我可以调整的vm参数以使fork返回成功? 最佳答案