redis32位内存限制

这周,部署的redis服务器出现oom(out  of memory)错误,导致所有的写操作都失败,影响了所有线上部署的使用redis的相关应用。

经过分析,发现部署的32位redis实例能使用的最大内存只能为4G(实际使用不到4G),配置文件中配置的30G没有用。如果没有配置最大内存,redis服务器在启动的时候会将最大内存设置为3G,以避免发生oom错误。在前期没有调研充分以发现32位实例的这个限制,在实际使用中随着数据的迅速增长,最终引起了该问题。

现把redis从32位实例升级到64位实例,从而解决了该问题。因为32位实例和64位实例生成的rdb文件和aof文件在两个实例之间是相互兼容的,因而没有导致数据的丢失,是不幸中的万幸,记录此事件以吸取教训。

(官方解释:Redis compiled with 32 bit target uses a lot less memory per key, since pointers are small, but such an instance will be limited to 4 GB of maximum memory usage. To compile Redis as 32 bit binary usemake 32bit. RDB and AOF files are compatible between 32 bit and 64 bit instances (and between little and big endian of course) so you can switch from 32 to 64 bit, or the contrary, without problems.)

 

1.redis在收到读写请求时,会检查是否设置了最大内存限制,如果设置了会尝试释放无用内存,如果释放内存失败,而且命令可能占用大量内存,则返回错误command not allowed when used memory > 'maxmemory'.,对命令不予执行。

2.redis服务器在启动从aof文件进行数据导入的时候,会按一定频率间隔进行外来请求处理,此时所有的请求会返回错误Redis is loading the dataset in memory.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值