| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 【网站架构】Redis多核CPU没用?调优需要注意哪些配置 -> 正文阅读 |
|
[大数据]【网站架构】Redis多核CPU没用?调优需要注意哪些配置 |
大家好,欢迎来到停止重构的频道。从本期开始,我们开始讨论对单个服务软件的性能调优。 本期,先讨论Redis的性能调优。 增加CPU核心数,是否会增加Redis的性能? 设置Redis时,应该注意哪些配置项? 我们按这样的顺序介绍?
明确性能指标在调优之前需要先明确性能指标,根据往期的《性能指标》, 整体系统的性能指标是并发量、吞吐量、错误率、响应时间。
如果整个系统的目标吞吐量为1000rps, 则Redis的读操作吞吐量最好为2000rps ,写操作的吞吐量最好为1000rps。 这里需要说明的是, 单台redis服务的吞吐量极限在十几万rps左右,如果需要更高的吞吐量 ,则需要额外设计数据分区等编程机制规避性能局限。 而错误率最好为0%,响应时间不需要特别关注,但如果出现一些响应时间特别长的数据操作还是要优化的。 最大并发量是设置的, 设置的值可以低于整体系统的最大并发值。 服务器硬件选择Redis的硬件选择一般是重点选择内存大小,需要估算所需要的内存空间。 至于CPU核数,由于Redis基本上是单线程操作数据的,所以一般单核即可。 ?CPU核数增多,基本不会增加Redis的性能。当然,为了防止一些基础软件抢占Redis的资源,可以选用2核或4核的CPU。 单个Redis服务性能调优接下来是对单个Redis服务调优,在这之前,?需要先调优服务器内核参数,调优方法可以参考往期《内核参数调优》。 ? 其实Redis的性能基本上是不需要调优的,Redis的吞吐量大概在10万-20万rps左右,再怎么修改配置,这个吞吐量也不会有太大的变化。 所以Redis服务调优的目的,并不在于提高性能 ,而在于防止一些问题发生。 Redis服务调优需要关注以下几点: 首先是设置最大请求数,也就是Redis服务的最大并发值。 这里推荐的是使用Redis的服务个数X2即可,例如 只有后端服务使用Redis且有5个后端服务,则设置为10即可。 当然,为了以后扩展方便,也可以设置得稍大一些,如200。 值得一提的是这个值设置再大都不会提升性能, 因为Redis大体上是单线程操作数据的。另外,后端与Redis的链接池也不需要设置太大,设置为2即可。 然后是最大内存空间,一般设置为服务器内存空间的80%,当然,如果一台服务器运行多个Redis服务, 则需要做更精准的划分。 接下来是淘汰机制,淘汰机制是当存储满了后淘汰数据的机制。 淘汰机制是需要根据数据场景而定的,但尽量不要保持默认配置。 默认配置是超出最大存储空间会报错拒绝新请求,这会引起很多问题 ,如果是存储Session的话, 那么后端服务可能也会直接报错,导致接口总是报500的错误。 至于磁盘存储的话,一般关闭即可。 但是一些场景如统计数据等场景仍然是需要开启的,保存的策略尽量放宽一些。 ?其他一些优化的配置如图所示,如优化慢查询、开启多io线程等。 测试Redis性能可以使用其自带的Redis-benchmark, 一般Redis的吞吐量大概为10万rps以上?,且增加CPU核数并无太大区别。 集群方案:主从模式?Redis有3种集群模式,第一种是主从模式,?从服务器会自动复制主服务器的数据。 从服务器是只读的,不接收写数据操作 主从模式的最大作用是备份数据以便容灾恢复等。 当然,主从模式也可作为读写分离的方案,不过主服务器和各从服务器有不同的IP。 所以最好再增加一个Redis, proxy程序(一类软件)作为负载均衡, 对外提供单一IP。 ? ? 主从模式有一个误区 ,就是作为高可用方案, 以为加上了keepalived服务之后,当主服务器宕机后,虚拟IP会自动切换到从服务器。 实际上,请求确实能切换到从服务器?,但是从服务器会依旧拒绝写数据请求?,这是起不到高可用的目的的。 ? 集群方案:哨兵模式第二种是哨兵模式,哨兵模式是主从模式的升级版。主服务器宕机后,其中一个从服务器会自动升级为主服务器。 但相对应的,也要额外运行Redis的哨兵程序,请求也是先发送到哨兵程序再转发到Redis服务。 如果有高可用需求,或读写分离需求,哨兵模式是比较好的。 集群方案:cluster集群模式第三种是cluster集群模式,这种模式是可以将数据分开存储在多个服务器的。 一般cluster模式是部署3主3从或以上,cluster模式也具备哨兵模式从机升级为主机的功能。 cluster模式的好处是数据容量的扩展是相对容易的,但也会让系统结构更为复杂,增加运维成本,建议等数据量起来后再考虑此模式。 总结哨兵模式和cluster集群模式的读写分离可以使用一些基础框架实现,springboot的话可以使用lettue。? 除了提到的点,还有一些提升Redis性能的方法: 过期时间加上一小段随机时间防止雪崩,因为大量相同时间过期的数据会造成很大的性能压力。 ?不同场景的数据独立存储在不同的Redis服务或集群中,因为一个Redis服务一般认为只有1个线程在工作。 ?? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 | -2025/5/1 6:20:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |