您的位置:首页 > 数据库 > Redis

redis默认配置调优

2017-02-26 19:18 204 查看
本文使用的redis版本为3.0.7,如下:

127.0.0.1:6379> info
# Server
redis_version:3.0.7

1: redis默认配置需要改动的地方如下(其它配置可以在运行时修改):

daemonize yes ,redis默认的后台是设置为no,表示不在后台运行,一般这个参数调为yes,表示redis以一个daemon的形式进行启动。

dir "/data/redis",dir默认的配置是./表示当前目录,这个配置会让你找不到存储的文件保存在哪里。转为表示./表示你在哪个目录,存储文件就放在哪个目录,所以这个得指定下。

logfile "/var/log/redis.log",logfile默认配置为空,表示不写日志文件,这个日志文件记录下方便查询问题。

maxmemory 2g,maxmemory默认配置为0,表示redis使用的内存无限,一般要对redis能使用的最大内存做限制。

repl-backlog-size 512mb,从库同步数据的backlog-size默认设置为1mb,在同步大量数据的时候会一直同步失败,因此需要扩大repl-backlog-size的值,预防一直同步影响redis主的性能,因为同步需要进行一次bgsave操作,io压力大。

2: redis需要系统调优的两个地方,如果没调整的话,在redis的log里面会有如下的提示:

4024:M 22 Jun 00:57:49.501 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

4024:M 22 Jun 00:57:49.501 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

第一个表示队列低于128,如果高并发下,队列会不够用。

第二个提示往往会导致redis的save操作失败,这个常常会让想保存数据的丢失数据。解决这两个提示需要在/etc/sysct.conf加入如下:

net.core.somaxconn = 10240

vm.overcommit_memory = 1

然后sysctl -p。一般这个调优要在redis-server启动之前。

3: redis存储调优

redis默认是使用bgsave的形式对数据进行存储,建议使用appendonly代替save,因为appendonly操作只简单对操作写入文件,简单对性能几乎影响。实践中redis的bgsave虽然说不会影响操作,但redis在bgsave的时候,前端访问性能下降很多,甚至出现无法访问的情况。

redis bgsave改成appendonly的操作:

127.0.0.1:6379> config set save ""
OK
127.0.0.1:6379> config set appendonly yes
OK

默认情况下save是为"900 1 300 10 60 10000",这里把它设置为空就不会启动bgsave了。

另外,bgsave改为appendonly,appendonly也会在大小增长了100%后进行自动的appendonly的rewrite,也就是把新增的key和原有的key做对比,相同的写入一个,这个也会影响性能,可以把这个关闭掉,操作如下:

127.0.0.1:6379> config set auto-aof-rewrite-percentage 0
OK

默认情况auto-aof-rewrite-percentage的数据为100,设置为0代表不自动aof rewrite,这样子redis性能就比较好了。

最后就是还有个小问题,appendonly一直在记录操作,如果没有定时任务去自动把所有的key取出来,重新写成一个文件的话,appendonly的文件会一直大下去,因此在/etc/crontab放个任务就好了,如下:

0 1 * * * root redis-cli BGREWRITEAOF

BGREWRITEAOF代表把redis中的数据重新导入一份到appendonly,然后原先的appendonly文件删除。

4: 需要注意的

运行时修改redis的配置的时候需要把运行时的配置写入到配置文件中,预防redis重启后配置又恢复原来的了。运行时配置写入配置文件中的命令为:CONFIG REWRITE

如果只做缓存用的话,存储优化就直接config set save ""关闭bgsave就好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息