一、Redis重启
redis 持久化有两种方式,一种是rdb,一种是aof。rdb类似于内存快照,aof类似于mysql的binlog,使用rdb启动速度一般快过aof。redis 持久化开启了aof,启动过程优先使用aof,如果aof文件一直没有压缩,启动Redis会是一个漫长的过程,启动过程要是超过一个小时,你可能要怀疑人生。有如下两种避免方法:
1)、重启前对aof 文件进行压缩,redis aof压缩命令如下
bgrewriteaof
2)、如果已经关停了redis实例(注意不是直接kill 实例,执行redis 的shutdown命令缺省会把数据备份到rdb中),启动时没有做任何处理,发现启动过程很耗时。
A、执行shutdown 命令,如果不成功直接使用kill 杀死redis 实例
B、执行命令mv appendonly.aof appendonly_backup.aof 改名aof 文件
C、修改配置文件,关闭aof再启动redis实例
二、Redis 持久化
持久化过程报错,报错日志如下:
Resource temporaily unavailabe
或
Cannot allocate memory
由于Redis 无论是使用rdb持续化还是aof持久化,都会fork出一个子进程,子进程和父进程会共享同一个地址空间,在fork子进程的过程,会检查本机的内存是否满足要求。当出现上述报错时可尝试如下两种方法:
A、修改vm.overcommit_memory参数为1或2,减少fork 进程需要的实际物理内存。
vm.overcommit_memory参数的用途可自行在网上查找,参数修改的方法如下
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl vm.overcommit_memory=1
B、修改参数后还不行,直接扩容服务器内存
待续......
网友评论