Redis性能调优:保存SNAPSHOT对性能的影响

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

前一段时间。开发环境反馈,Redisserver訪问很慢,每一个请求要数秒时间,重新启动之后2~3天又会这样。

我查看了一下Linux的性能,没有什么问题。

通过

# redis-cli --latency

发现訪问Redis确实非常慢,运行info要几秒时间。里面有个參数已连接的client几万个,通过

Redis>client list

查看到非常多client的age都非常大,一直没有释放。于是怀疑是不是和这个有关。由于版本号是2.8.6,无法通过client一次性kill掉全部的连接,仅仅能写一个程序,一个一个地kill掉(

CLIENT KILL addr:port)。但问题依旧存在。

于是进一步查看配置文件,发现SHNAPSHOT是默认打开状态。

 save 900 1

 save 300 10

 save 60 10000

由于我们缓存是用于Session保存,不推荐快照保存。特别是在Redis是VM机器上,对总体的性能影响会非常大。 于是參考我们的手冊凝视:

################################ 快照 #################################

保存数据到磁盘,格式例如以下:

#  save <seconds> <changes>

#   指出在多长时间内,有多少次更新操作。就将数据同步到数据文件rdb

#   相当于条件触发抓取快照,这个能够多个条件配合

#   比方默认配置文件里的设置,就设置了三个条件

#  save 900 1  900秒内至少有1key被改变

#  save 300 10  300秒内至少有300key被改变

#  save 60 10000  60秒内至少有10000key被改变

# Session缓存server不使用快照,都凝视

# save 900 1

# save 300 10

# save 60 10000

重新启动Redis之后。观察了一个月时间。再没有反馈到性能问题了。

另外在没有使用client的PUB/SUB的情况下,建议參考以下的參数。设置client的连接超时,在300毫秒后,假设不用,服务端会自己主动关闭连接,释放资源。默认是关闭的。


设置client连接时的超时时间,单位为秒。

当client在这段时间内没有发出不论什么指令。那么关闭该连接

# 0是关闭此设置

推荐5分钟。

timeout 300

# TCP keepalive

Linux上,指定值(秒)用于发送ACKs的时间。注意关闭连接须要双倍的时间。

默觉得0

推荐60

tcp-keepalive 60

注:

Redis 2.8.12已经能够通过client类型,一次性kill到全部相关的连接。






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5173677.html,如需转载请自行联系原作者
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
NoSQL 数据处理 调度
【Redis深度专题】「踩坑技术提升」探索Redis 6.0为何必须启用多线程以提升性能与效率
【Redis深度专题】「踩坑技术提升」探索Redis 6.0为何必须启用多线程以提升性能与效率
250 0
|
15天前
|
存储 缓存 NoSQL
为什么Redis使用单线程 性能会优于多线程?
在计算机领域,性能一直都是一个关键的话题。无论是应用开发还是系统优化,我们都需要关注如何在有限的资源下,实现最大程度的性能提升。Redis,作为一款高性能的开源内存数据库,因其出色的单线程性能而备受瞩目。那么,为什么Redis使用单线程性能会优于多线程呢?
24 1
|
1月前
|
监控 NoSQL 测试技术
解密Redis性能:如何通过性能测试提升系统稳定性和效率
解密Redis性能:如何通过性能测试提升系统稳定性和效率
|
2月前
|
存储 缓存 Dragonfly
微软开抢年收入上亿美元的 Redis 饭碗?开源性能遥遥领先的 Garnet:无需修改,Redis 客户端可直接接入
微软开源了高性能缓存系统Garnet,旨在挑战 Redis 和 Dragonfly。Garnet 基于 .NET8,提供高吞吐量、低延迟和跨平台支持。它支持 RESP 协议,允许大部分 Redis 客户端无缝迁移。Garnet 的特性包括多连接批量处理以提升扩展性和吞吐量,以及更好的延迟稳定性。适合于需要高性能缓存层来降低成本和提高应用性能的场景。Garnet 的集群模式允许动态键迁移和分片管理,且支持 TLS 和自定义扩展。其网络层设计减少了线程切换开销,存储层则具备丰富的 API 和事务支持。在基准测试中,Garnet 在吞吐量和延迟上优于 Redis 和 KeyDB,展现出优秀的扩展性。
327 0
微软开抢年收入上亿美元的 Redis 饭碗?开源性能遥遥领先的 Garnet:无需修改,Redis 客户端可直接接入
|
2月前
|
存储 NoSQL 测试技术
JMeter Redis 数据集 vs CSV 数据集性能对比
【2月更文挑战第27天】JMeter Redis 数据集 vs CSV 数据集性能对比
90 1
JMeter Redis 数据集 vs CSV 数据集性能对比
|
2月前
|
弹性计算 NoSQL 测试技术
倚天使用|Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
137512 5
|
3月前
|
存储 缓存 NoSQL
Redis性能滑坡:哈希表碰撞的不速之客【redis第二部分】
Redis性能滑坡:哈希表碰撞的不速之客【redis第二部分】
31 0
|
9月前
|
缓存 监控 NoSQL
Redis性能监测与故障排除:保障稳定性与优化性能
本篇深入探讨了如何监测Redis性能、使用性能分析工具优化性能,以及排除常见故障的方法。我们首先介绍了通过Redis的INFO命令获取服务器状态和性能信息,为实时监测提供了手段。进一步地,我们探讨了使用--latency选项的redis-cli工具来检测Redis命令延迟,帮助用户了解性能瓶颈。
392 0
|
9月前
|
存储 缓存 NoSQL
Redis缓存应用与最佳实践:优化性能与处理挑战
本篇深入探讨了Redis在缓存应用中的最佳实践,旨在优化性能并处理常见的缓存挑战。我们首先介绍了设计高效缓存架构的基本原则,展示了如何使用Redis作为缓存存储来提升应用性能。进一步地,我们讨论了缓存更新策略,演示了如何在源数据更新时同时更新缓存,以确保数据的一致性。
389 0
|
4月前
|
存储 缓存 监控
Redis 7.0性能大揭秘:如何优化缓存命中率?
Redis 7.0,这货不仅仅是一个简单的缓存工具,它更是一款高性能的数据结构服务器。现在,大家都知道缓存命中率对性能影响特别大,但怎么优化它呢?