首页 > 数据库 >高性能Redis服务器注意事项

高性能Redis服务器注意事项

时间:2022-12-19 08:55:48浏览次数:37  
标签:建议 绑定 Redis 网卡 注意事项 服务器 CPU

摘要

昨天简单理了理安装与配置相关的
但是很多比较重要的核心性能参数并没有进行学习与探讨
就基于昨天理解不深入的地方进行进一步的学习与了解
希望能够提高Redis-Server的性能.

第一部分: 规范

一切性能都是以代码为核心的.
再好的硬件. 如果代码水平都不行, 肯定是无法发挥硬件的性能.
Redis也是如此.为了能够进行高性能的工作.
Redis的规范也必须严格. 
这里简单学习一下阿里云的Redis规范. 总结如下:
1. 键名要有含义,不要太长,不要有乱码.不建议有特殊字符.
2. value不能使用bigkeys. 坚决杜绝
3. 键值对有效期要合理,不要随意设置过长,或者是一致的过期时间. 
4. 命令有规律,不要使用太多影响性能的命令.
5. 不要使用危险命令. 注意保证安全与稳定. 
6. 设置好最大maxmemory以及maxmemory-policy 等策略. 避免系统宕机. 

禁用危险命令的方法

可以在配置文件中执行如下命令进行禁用
rename-command KEYS ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""

第二部分: CPU的亲和性

Redis的核心线程只有一个, 所以对CPU的极限性能要求比较高.
昨天的安装测试也能够发现. 虚拟化是会导致CPU实际性能的下降(15%-25%)
如果有超售, 影响可能更加巨大. 

所以建议Redis可以尽量使用高主频的物理机器(建议SSD,并且保证稳定性)
因为现在服务器一般是多路架构,并且不少服务器比如AMD和飞腾鲲鹏都是SOC片上就是NUMA节点
所以建议能够在启动时进行一下CPU的亲和性的设置. 

在如此建议下. 搞配置的多路服务器的Redis的内存可能不要超过(总内存数/(2*路数)) 的数值
尽量让主线程和后台线程跑再一个NUMA的节点上,速度会有较快的提升. 

CPU亲和性的设置

1. 可以使用numactl -s的方式查看 物理服务器的相关信息.
2. 根据以往的经验. 建议关闭 HT 超线程设置. 提高主线程的处理效率.避免不必要的争用.
3. 另外一般网卡处理会根据网卡的数量进行绑定从0开始的CPU.
   所以也不建议跟网卡公用CPU,会因为网卡的中断,导致处理性能下降. 
4. 如果服务器的每个物理CPU的内存插槽数相同, 通道数一致.那么不建议绑定 0 开头的CPU
   建议绑定1之后的CPU.

绑定方法
1. 可以使用taskset -c 的方式进行绑定
2. 可以修改配置文件进行绑定
   较新的redis版本比如7.0.7 配置文件中有绑核的设置. 
   打开相关注释就可以进行绑核了. 
#Set redis server/io threads to cpu affinity 0,2,4,6:
server_cpulist 0-7:2   
# Set bio threads to cpu affinity 1,3:
bio_cpulist 1,3
# Set aof rewrite child process to cpu affinity 8,9,10,11:
aof_rewrite_cpulist 8-11
# Set bgsave child process to cpu affinity 1,10,11
bgsave_cpulist 1,10-11

第三部分 网络调优

Redis Server其实是一个 Client-Server架构的服务器.
他有极高的网络带宽需求, 所以网络调优必不可少. 
1. 网卡中断绑核. 需要专家进行.
2. 网卡流量bond. 有时候一个万兆网卡可能无法满足需求. 
   建议能够2-4个网卡使用聚合的方式进行提供网络服务.提高承载能力. 
3. 上下游交换机.最好使用光纤设备. 如果是电缆,至少为六类超六类.
   光纤的延迟和抖动都比较好,能够更好的承载业务. 
4. 建议交换机使用冗余配置.并且为高性能专用交换机. 避免网络流量阻塞. 
5. 建议针对不同的应用服务器实现限速, 避免一台机器网卡流量暴增阻塞其他服务器. 

第四部分 操作系统部分

1. 内核参数调整
   backlog 以及 somaxconn 等参数设置, 设置能够承载足够的容量.
2. 内部的TCP参数调优,添加缓存区域. 
   是否可以使用大MSS或者是MTU,提高网络利用率. 
3. 如果使用持久化,建议选用高速度的SSD. 
   建议选用相同NUMA节点的内存进行处理.
4. 建议选用于对应Redis版本匹配的较高内核版本的Linux系统.
   能够发挥更好的redis的性能. 
5. 关闭非核心软件,避免资源争用. 
   建议软件专用, 避免有不可控因素导致性能下降. 

标签:建议,绑定,Redis,网卡,注意事项,服务器,CPU
From: https://www.cnblogs.com/jinanxiaolaohu/p/16991404.html

相关文章

  • Redis7.0.7的简单安装与学习
    Redis7.0.7的简单安装与学习摘要2022.12.18世界杯决赛另外是我感染奥密克戎第五天.高烧已经没了,但是嗓子巨疼.睡不着觉,肝胆学习一下最新的Redis7.0.7第一部分......
  • ubuntu redis sentinel安装部署
    1.命令行安装sudoaptupdatesudoaptinstallredis-serversudoaptinstallredis-sentinel2.查看安装版本#redis-cli--versionredis-cli5.0.73.配置修改......
  • 3《Redis DevOps》三:小功能大用处-常用工具
    ##概述1.慢查询分析,找到有问题的命令进行优化2.RedisShell3.Pipeline,提高客户端性能4.事务与Lua脚本,自定义原子命令5.Bitmaps,字符串的位操作,节省内存6.HyperLogLo......
  • Redis入门
    Redis是一个基于内存的Key-value结构数据库基于内存存储,读写性能搞适合存储热点数据(热点商品,资讯、新闻)企业应用广泛Redis简介Redis是用C语言开发的一个开源的高性......
  • 1、Java Web服务器是怎么处理请求的?
    从2017年初开始自学Java,到现在工作一年半,恍然间已经在Java世界里畅游了大概6年。作为一名Java后端程序员,如今日常工作就是写写接口,用来接收前端的请求,然后返回处理结果。......
  • 服务器集群使用过程中遇到的一些问题
    自己参与开发的项目,在测试环境只有一台服务器,每次部署的时候只需要部署单台服务器。可是生产环境则不一样,生产环境部署了10台左右的应用服务,跑起来的效果和单台服务......
  • 从redis源码看数据结构(一)链表
    文章目录​​从redis源码看数据结构(一)链表​​​​一,redis数据类型​​​​二,redis底层列表实现​​​​1.列表底层数据结构​​​​2.redis双向链表操作​​​​新建链表​......
  • frp服务器搭建
    想弄一个自己的访问学校内网资源的代理服务器,于是乎...求助群友..不啦不啦第一步用自己前几天买的服务器搭建frp内网穿透完全按照这个博客搞的.记得在服务器管理界面开......
  • redis的set命令学习
    转自:http://doc.redisfans.com/string/set.html,https://juejin.cn/post/71204208685130711411.介绍SETkeyvalue[EXseconds][PXmilliseconds][NX|XX] EX sec......
  • 部署远程服务器
    远程访问提供两个方式:1、拨号网络2、虚拟专用网​虚拟专用网优点:1、成本较低2、连接方便可靠3、完全可靠​网络策略服务器的策略有哪两种:连接请求策略和网络策略​实验......