Redis性能调优建议
一、 Redis部署结构优化建议
1. Master不做AOF或RDB持久化,Slave做AOF持久化,建议同时做RDB持久化
2. 所有Master全部增加Slave
3. Master挂载Slave不超过2个,采用M-S-S方式挂载。若想保证高可用,即主从切换,可采用Keepalived机制.
备注:以上是基于Redis部署结构不合理提出的建议,同时也参考了新浪微博、淘宝架构中Redis优化方案给出
二、 Redis配置优化建议
1.tcp-keepalive 60
阻止由于某个command执行过长达到timeout超时时间而被断开连接,且可以提高连接错误的检测.
2.stop-writes-on-bgsave-error no
当bgsave快照操作出错时停止写数据到磁盘,这样后面写操作均会失败,为了不影响后续写操作,故需将该项值改为no.
3.rdbchecksum no
检查RDB数据的正确性,会牺牲10%的性能,故建议关闭.
4.auto-aof-rotate-max-size 20gb
auto-aof-rotate-max-total 4
auto-aof-rewrite-percentage 0 (关闭rewrite模式)
将AOF rewrite模式改为rotate模式,即将AOF在线实时Rewrite的功能,切换到线下操作,1份AOF文件切割成多份(类似日志切割),这样提升了redis性能的同时提升内存的利用率.
5.no-appendfsync-on-rewrite yes
避免新修改数据刷磁盘时出现IO阻塞
备注:以上是基于Redis配置不合理提出的优化建议
三、 系统内核配置优化建议
1.开启了AOF模式,为了缓解IO阻塞
编辑/etc/sysctl.conf ,添加如下配置:
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
然后sysctl -p 使配置文件生效.
2.开启了RDB模式,为了避免Fork失败
编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,
然后sysctl -p 使配置文件生效
备注:以上是基于测试结果给出的系统内核优化建议
后续计划:
以上是从架构角度提出的优化建议,后续会从业务角度,分析内存类型是否合理、冷热数据划分是否合理等
备注:
关于冷热数据划分,可使用如下Redis命令进行统计分析:
OBJECT REFCOUNT 该命令主要用于调试(debugging),它能够返回指定key所对应value被引用的次数.
OBJECT ENCODING 该命令返回指定key对应value所使用的内部表示(representation)(译者注:也可以理解为数据的压缩方式).
OBJECT IDLETIME 该命令返回指定key对应的value自被存储之后空闲的时间,以秒为单位(没有读写操作的请求) ,这个值返回以10秒为单位的秒级别时间,这一点可能在以后的实现中改善
Redis性能调优建议的更多相关文章
- redis性能调优笔记(can not get Resource from jedis pool和jedis connect time out)
对这段时间redis性能调优做一个记录. 1.单进程单线程 redis是单进程单线程实现的,如果你没有特殊的配置,redis内部默认是FIFO排队,即你对redis的访问都是要在redis进行排队,先 ...
- Redis性能调优
Redis性能调优 尽管Redis是一个非常快速的内存数据存储媒介,也并不代表Redis不会产生性能问题.前文中提到过,Redis采用单线程模型,所有的命令都是由一个线程串行执行的,所以当某个命令执行 ...
- iOS应用性能调优建议
本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelofabri.com/,你还可以 ...
- JVM常用命令和性能调优建议 [Could not create the Java virtual machine]
一.查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号. ...
- JVM常用命令和性能调优建议
一.查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程 ...
- Redis性能调优:保存SNAPSHOT对性能的影响
前一段时间.开发环境反馈,Redisserver訪问很慢,每一个请求要数秒时间,重新启动之后2~3天又会这样. 我查看了一下Linux的性能,没有什么问题. 通过 # redis-cli --late ...
- .net ServiceStack.Redis 性能调优
最近在debug生产环境的问题时,发现了ServiceStack 4.0.60版本RedisClient存在一个非常严重的性能问题.在高并发下,PooledRedisClientManager.Get ...
- StackExchange.Redis性能调优
大家经常出现同步调用Redis超时的问题,但改成异步之后发现错误非常少了,但却可能通过前后记日志之类的发现Redis命令非常慢. PS: 以后代码都在Windows bash中运行,StackExch ...
- Redis基础、高级特性与性能调优
本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍.之后概览Redis提供的高级能力,并在部署.维护.性能调优等多个方面进行更深入的介绍和指导. ...
随机推荐
- mvc-自定义视图引擎
//自定义视图引擎的实质是把数据模型(moudle)和模板(View)转换成html页面,输出到客户端public class MyView:IView { string _viewPath; pub ...
- SQLAlchemy 学习笔记(三):ORM 中的关系构建
个人笔记,不保证正确. 关系构建:ForeignKey 与 relationship 关系构建的重点,在于搞清楚这两个函数的用法.ForeignKey 的用法已经在 SQL表达式语言 - 表定义中的约 ...
- [Android]APK一键反编译
每次反编译就是件很烦的事情,烦了就开始偷懒.直接写成脚本节省操作. 使用apktool,d2j-dex2jar进行反编译 脚本:reseve-complie-apk.py import os impo ...
- html5中checkbox的选中状态的设置与获取
获取checkbox是否选中: $("#checkbox").is(":checked"); 获得的值为true或false. 设置checkbox是否选中: ...
- MyEclipse生成get/set注释
我的外网链接 http://yezi-0016.iteye.com/blog/2290421
- vue项目中使用阿里iconfont图标
在上一篇文章中介绍了如何在vue项目中使用vue-awesome,如果你想了解,请移步<vue项目中使用vue-awesome> 这里介绍一下vue项目中如何使用阿里的iconfont图标 ...
- JSTL获取Session的ID与获取文件的真实路径与项目名称
今天在测试集群配置的时候想到session共享,因此想要获取sessionID,可以通过下面方法: ${pageContext.session.id} 获取文件的真实路径: <%=request ...
- pyqt线程实现
# coding=utf-8 __author__ = 'a359680405' from PyQt5.QtCore import * from PyQt5.QtGui import * from P ...
- TCP/IP和HTTP协议与Socket的区别联系
参考资料: http://www.cnblogs.com/goodcandle/archive/2005/12/10/socket.html http://www.2cto.com/net/20121 ...
- 阿里云服务器 centos 7 安装postgresql 11
Postgresql简介 官方网站:https://www.postgresql.org/ 简介参考zhihu文章 https://www.zhihu.com/question/20010554 关于 ...