redis维护手记

2022-06-19  本文已影响0人  逍遥的石头

一、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、修改参数后还不行,直接扩容服务器内存

待续......

上一篇 下一篇

猜你喜欢

热点阅读