Ubuntu 10.04.2,Redis 2.0.3(问题末尾有更多详细信息)。
我的 Redis AOF 文件变得太大,以至于很快就会占用我的小 HDD VPS 盒上的整个可用磁盘空间:
$ df -h 文件系统大小已使用可用使用率%安装于 /dev/xvda 32G 24G 6.7G 78% / $ ls -la 总计 3866688 drwxr-xr-x 2 redis redis 4096 2011-03-02 00:11 。 drwxr-xr-x 29 根 根 4096 2011-01-24 15:58.. -rw-r----- 1 redis redis 3923246988 2011-03-02 00:14 appendonly.aof -rw-rw---- 1 redis redis 32356467 2011-03-02 00:11 dump.rdb
当我运行时BGREWRITEAOF
,AOF 文件缩小了,但是磁盘空间并未释放:
$ ls -la 总计 95440 drwxr-xr-x 2 redis redis 4096 2011-03-02 00:17 。 drwxr-xr-x 29 根 根 4096 2011-01-24 15:58.. -rw-rw---- 1 redis redis 65137639 2011-03-02 00:17 appendonly.aof -rw-rw---- 1 redis redis 32476167 2011-03-02 00:17 dump.rdb $ df -h 文件系统大小已使用可用使用率%安装于 /dev/xvda 32G 24G 6.7G 78% /
果然,Redis 仍然保存着被删除的文件:
$ sudo lsof -p6916 命令 PID 用户 FD 类型 设备大小/关闭节点名称 ... redis-ser 6916 redis 7r REG 202,0 3923957317 918129 /var/lib/redis/appendonly.aof (已删除) ... redis-ser 6916 redis 10w REG 202,0 66952615 917507 /var/lib/redis/appendonly.aof ...
我该如何解决这个问题?这次我可以重新启动 Redis,但我真的不想经常这样做。
请注意,我无法升级到 2.2(但可以升级到 2.0.4)。
有关我的系统的更多信息:
$ lsb_release-a 无可用的 LSB 模块。 分销商 ID:Ubuntu 描述:Ubuntu 10.04.2 LTS 版本:10.04 代号:lucid $ uname -a Linux my.box 2.6.32.16-linode28 #1 SMP 星期日 7月 25 21:32:42 UTC 2010 i686 GNU/Linux $ redis-cli 信息 redis_version:2.0.3 redis_git_sha1:00000000 redis_git_dirty:0 架构位:32 多路复用API:epoll 进程 ID:6916 正常运行时间(秒):632728 正常运行时间(天数):7 已连接客户端:2 已连接的从属:0 阻止客户端:0 已用内存:65714632 已用内存:62.67M 自上次保存以来的变化:8398 保存进度:0 上次保存时间:1299014574 bgrewriteaof_in_progress:0 总收到连接数:17 已处理命令总数:55748609 已过期密钥:0 hash_max_zipmap_entries:64 hash_max_zipmap_value:512 pubsub_channels:0 pubsub_patterns:0 虚拟机已启用:0 角色:主人 db0:键=1,过期=0 db1:键=18,过期=0
答案1
事实证明这是 Redis 中的一个真正的错误,将在 2.2.2 中修复。