Ubuntu 10.04.2,Redis 2.0.3(问题最后的更多细节)。
Redis的AOF文件变得太大,以至于很快就会威胁到我的小硬盘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 root root 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 root root 4096 2011-01-24 15:58 -rw-rw ---- 1 redis发布时间: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用户FDtypes设备大小/关节点名称 ... 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(尽pipe升级到2.0.4是可行的)。
有关我的系统的更多信息:
$ lsb_release -a 没有LSB模块可用。 经销商ID:Ubuntu 描述:Ubuntu 10.04.2 LTS 版本:10.04 代号:清楚 $ uname -a Linux my.box 2.6.32.16-linode28#1 SMP Sun Jul 25 21:32:42 UTC 2010 i686 GNU / Linux $ redis-cli info redis_version:2.0.3 redis_git_sha1:00000000 redis_git_dirty:0 arch_bits:32 multiplexing_api:epoll的 PROCESS_ID:6916 uptime_in_seconds:632728 uptime_in_days:7 connected_clients:2 connected_slaves:0 blocked_clients:0 used_memory:65714632 used_memory_human:62.67M changes_since_last_save:8398 bgsave_in_progress:0 last_save_time:1299014574 bgrewriteaof_in_progress:0 total_connections_received:17 total_commands_processed:55748609 expired_keys:0 hash_max_zipmap_entries:64 hash_max_zipmap_value:512 pubsub_channels:0 pubsub_patterns:0 vm_enabled:0 作用:主 DB0:键= 1,过期= 0 DB1:键= 18,期满= 0
原来这是Redis的一个真正的bug,在2.2.2中修复。