Redis 经典问题处理-常见面试题
来源:http://www.tudoupe.com时间:2022-04-14
目录
- 处理Redis经典问题 -- -- 典型访谈问题
- Redis 连接的问题
- 1、最大连接数
- 2. 存在大量长期连接的原因
- 重新编辑 CPU 问题
- 1. 重消费订单导致处理器超负荷工作。
- 2. 由于连接数量过多而过度使用CPU
- 3. OF 数据可持续性
- 重新编辑内存问题
- 1、key 较多
- 2. " 重金 " 和 " 重金 "
- 3、内存碎片
- 重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重重
- 参考
处理Redis经典问题 -- -- 典型访谈问题
Redis 连接的问题
Redis无法创建 POP 服务器“%s”:%s
1、最大连接数
故障分析
Redis与默认服务器配置的最大连接数maxclients事实上,10,00,00, 但是这取决于服务器文件的最大数量; 服务器的默认最大文件数量是1024, 因此redis最大连接次数为1024-32,等于992。
故障处理
- 首先查看当前连接数
- 查看最大连接数
- 如果由于服务器文件的最大数量,连接数量大大低于最大连接数量,则更改相关文件。
2. 存在大量长期连接的原因
故障分析
监控平台查看到redis客户端连接太大, 超过 1W 最大限制 。
使用以下命令,您可以检查个人连接细节。
如果存在一些自由连接,应使用主节点。cmd=null,从节点cmd=readonly,并且idle闲置时间很长,导致连接池保持过多的连接。
如果客户端长期不活动, 当前版本的 Redis 默认不会关闭与客户端的连接: 连接将无限期保持开放 。
故障处理
- 设置
timeout - 设置
tcp-keepalive - 应用程序配置中的自动释放连接
重新编辑 CPU 问题
在Redis
根据官方的纸质Reids访谈问题,CPU是Redis的瓶颈,通常局限于记忆或网络。
然而,在实际生产环境中仍然存在问题。redis cpu占用过高的场景
1. 重消费订单导致处理器超负荷工作。
故障分析
高消费指令(低查询或高价值):具有O(N)或更高时间复杂性的指令。 通常,命令越复杂,在执行过程中花费的资源就越多,导致CPU利用率上升。
这是因为Redis这是一个使用单线多红木卫一概念的记忆数据服务,其性能很强。这个系统消除了锁的需要 。同时,这种技术将减少重复执行更费时的指示,如团结。因为单线程,因此,耗时的订单可能会造成下降和下降。读写并发都会下降,因此,CPU的使用有所增加。
故障处理
- 评价和拒绝高风险和高消费订单
- 改进业务流程,减少对频繁数据分类活动的需要。
- 调整
redis结构是扫盲的分离结构,可转移高消费订单或应用程序。
2. 由于连接数量过多而过度使用CPU
参考前面的 Redis 连接的问题
3. OF 数据可持续性
故障分析
Redis有两种可行的选择:RDB(默认)和AOF(朋友的默认)。
RDB 是 Redbis 的默认可持续性。 它在预设的时间内将存储数据保存在硬盘上, 与生成的数据文件相对应 。 Rdb. 通过在文件中指定保存选项来保存抓图周期 。
AOF( 仅附加文件) 的持久性将每个 Redis 写入逗号记录为单独的日志文件, 当 Redis 重新启动时, 它会从持续日志中恢复数据 。
在Redis 4.0还有混合和耐久的选择bgsave的全量和aof纳入增量数额是为了既保证回收的效率,又保证数据的完整性,如果指定了区域数据库和欧渔组的优先次序,将首先装载欧渔组。
当AOF启用,服务器需求大时,经常执行AOF导致CPU消费略有增加。
故障处理
- 如果商业条件允许,许可终止营业。
- 提升机器配置
重新编辑内存问题
当瑞迪斯的记忆失去他的时候或者Redis在Linux内核里被OOM摧毁了抛出错误崩溃,要么就会卡顿。因为大多数目前的操作系统客服算法 不返回 NULL,这是围绕服务器交换的开始。结果,Redis的表现受到影响。错误发生; Redis 的内置保障允许用户在配置文件中使用。maxmemorySetis 的最大内存占用选项。 如果达到最大限值, Redis 将命令报告为错误 。
这是对内存过度使用的检查
1、key 较多
通常考虑扩大记忆范围,如果有更多关键内容,而且需要与研究与发展一起确认是否有理由确定终止日期,以及数据是否永久不线。
2. " 重金 " 和 " 重金 "
重置 BBK 参考问题
3、内存碎片
查看内存碎片
主要看mem_fragmentation_ratio字段
>1&&<1.5:适当的范围范围,显示操作系统的内存总是大于实际请求的空间,只有几块>1.5内存超过50%,需要采取各种行动以尽量减少碎片率。<1当实际分配的内存小于应用程序内存时,显然内存不足,导致一些数据被推入 Swap 。
当物理内存不足时,某些内存页可以交换操作,以缓解眼前的需要。
硬驱动器供应互换空间可以构成一个系统瓶颈,用于需要大量梳理和呕吐的程序。 当然,内存符合Redis 规则并启动记录和档案管理逐步淘汰程序。
Redis访问Swap数据时,潜伏时间增加,性能下降。
内存碎片清理
- 重新启动 Rediis( 之前 4. 0, 四. 0 支持碎片清除功能)
- 清理碎片
- 自动清理
- 手动清理
自动清理触发机制
- 活动- defrag-ignore- bytes 100mb: 默认设置, 当垃圾超过 100MB 时打开清理 。
- 活性- 脱裂- 下限- 下限 10 : 默认值, 当碎片达到10%时打开清理 。
- 主动- 脱裂阈值- 最高100 : 当有100%以上的 RAM 垃圾时, 最好尝试排序 。
重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重做重重
原因
- 在不可适用的背景下使用 Redis, 如使用字符串类型键来持有宽度二进制文件类型数据, 很容易导致 Key 的过量值 。
- (a) 业务前规划不足,关键部分缺乏合理的成员分裂,导致关键部分个别成员任职人数过多;
- (b) 非定期清理错误数据,导致成员不断增加,如HASH Key类;
- 在使用 " 关键 " 类清单的商业消费方时,代码故障仅导致与 " 关键 " 相对应的成员数目增加。
解决方法
- 对大Key进行拆分
- 对于字符串类型的密钥,在业务一级,我们通常必须将价值保持在10KB以下。如果值真的很高,可以考虑使用测序算法和压缩算法。建议采用许多序列化方法,包括Protostaff、Kryo和Fst。
- 为了实现键组装类型的目的,我们通常通过规范收藏中组件的数量来防止重键,通常将大键组装类型分为少数几小类集体键组。
- 大密钥清理:存储与其他存储库中 Redis 能力无关的数据,并从 Redis 中删除这些数据。
- 经常数据清理:大量旧数据的积累可能导致大量费用,例如,随着HSH数据类型,大量数据不断以递增形式写成,忽略了数据的及时性。 过时的数据可能用排定的工作清除。
参考
[1]
Redis client handling
[2] 重订业绩核查
[3] 为什么CPU结构对Redis的表现有影响?
[4]
The Top 6 Free Redis Memory Analysis Tools
[5]
How to analyze and optimize memory usage in Redis
上一篇:GBase 8s 初学者常见问题
下一篇:Go语言入门常见的一些问题
相关新闻
- 2023-04-16 2台电脑怎么共享(2台电脑怎么共享
- 2023-04-16 主板检测卡代码(电脑主板检测卡代
- 2023-04-16 dnf未响应(dnf未响应老是上不去)
- 2023-04-16 ppoe(pppoe拨号上网)
- 2023-04-16 网速不稳定(网速不稳定是路由器的
- 2023-04-16 wds状态(Wds状态成功)
- 2023-04-16 光标键(光标键不动了怎么办)
- 2023-04-16 电脑提速(电脑提速100倍的方法)
- 2023-04-16 切换用户(切换用户怎么切换回来
- 2023-04-16 数据包是什么(产品数据包是什么
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
