常用的影响redis的操作系统配置详解

1. overcommit_memory

有时候我们在启动redis服务器的时候会看到

WARNING overcommit_memory is set to 0! Background save may fail under low memory

这样的提示,在修改前我们先了解下什么是overcommit, linux操作系统对大部分申请内存的请求都回复yes,以便能运行更多的程序,因为申请内存后,并不会马上使用内存,这种技术叫做overcommit(需要注意的是 overcommit 针对的是内存申请,内存申请不等于内存分配,内存只在实际用到的时候才分配)

overcommit_memory用来设置内存分配的策略,有三个可选值

 

含义
0表示内核将检查是否有足够的可用内存,如果有足够的可用内存,内存申请通过,否则内存申请失败,并把错误返回给应用进程
1表示内核允许超量使用内存直到用完为止
2表示内核绝不过量的使用内存,即系统整个内存地址空间不能超过swap+50%的RAM值,50%是overcommit_ratio默认值,此参数同样支持修改

redis建议把这个值设置为1,是为了让fork操作能够在低内存下也执行成功

2.swappiness

linux会使用磁盘的一部分做为SWAP分区,用来进行进程调度,睡眠的进程一般会放在SWAP分区,以腾出更多的内存给活动中的进程。swappiness会决定操作系统使用swap的倾向程度,swappiness值的取值范围是0-100,swappiness的值越大,说明操作系统使用swap的概率越高,swappiness值越低,说明操作系统更加倾向于使用物理内存,linux的默认值是60 即你的内存在使用到100-60 =40%的时候就开始出现有交换分区的作用

3. THP

THP支持大内存也(2MB)分配,默认开启,当开启时会降低fork子进程的速度,但fork操作之后,每个内存页从原来4kb变为2mb,会大幅增加重写期间父进程内存消耗。同时每次写命令引起的复制内存页单位放大了512倍,会拖慢写操作的执行时间,导致大量写操作慢查询。因此redis建议禁用该命令

4.ulimit

在linux中,可以通过ulimit查看和设置系统当前用户进程的资源数

redis允许同时有多个客户端通过网络进行链接,可以通过配置maxclients来限制最大客户端连接数,对linux操作系统来说,这些网络连接都是文件句柄,由于redis默认的maxclient数是10000,因此redis建议把open files设置为10032,为什么open files 要比maxclient多32个呢,是因为redis内部会使用最多32个文件描述符

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值