当前位置: 首页 > 科技观察

高性能内存数据库Redis的免费工具,更有针对性的分析实例内存

时间:2023-03-21 10:54:35 科技观察

在分析Redis实例的内存使用情况时,市面上有很多免费开源的工具,也有少量付费产品。最受欢迎的工具是Jacks(在所有行业中),但如果您想更深入地分析内存问题,最好使用更有针对性、鲜为人知的工具。这里汇总了几个有用的免费工具,在分析Redis实例的内存使用情况时很有用。1.Redis内存分析器(RMA)RMA是可用于Redis的最全面的FOSS内存分析器之一。它支持三种不同级别的详细分析。全局——内存使用信息概览;Scanner-最高级别的键空间/前缀级别的内存使用信息,即使用最短的公共前缀;RAM-最低级别的键空间/前缀,即使用最长的公共前缀。在全局模式下,RMA提供了一些高级的统计信息,比如key的数量、系统内存、常驻集大小、key空间大小等,唯一的作用就是“keyspaceoverhead”,即Redis系统用来存储keyspace的内存-相关信息,例如指向列表数据结构的指针;在扫描模式下,可以获得键空间的概览。它提供了一个高级命名空间,以及它的条目类型和该命名空间消耗的内存百分比。然后将“RAM”行为与命名空间模式结合起来进行详细分析是很有用的。在RAM模式下,可以使用大多数其他FOSS内存分析器提供的键空间级内存消耗。您将获得有关已用内存、实际数据大小、开销、编码、最小值和最大值、TTL等的详细信息。这有助于查明系统上最大的内存占用情况。虽然该工具并不总是更新,但GitHub上的最后一次提交是在一年多以前。但即便如此,它也是对内存进行详细分析的最佳方法之一。2.RedisSamplerRedisSampler是一个非常强大的工具,可以深入了解Redis实例的内存使用情况。它由Redis背后的开发人员antirez维护,并且通过该工具深入了解Redis。该工具不经常更新,但报告的问题并不多。RedisSampler对数据库执行概率扫描并报告以下信息:键在各种数据类型中的百分比分布——基于键的数量,而不是对象的大小。基于strlen的字符串类型的最大键,以及它们消耗的内存百分比。对于所有其他数据类型,计算最大键并将其显示为两个单独的列表:一个基于对象的大小,另一个基于对象中的项数。对于每种数据类型,它还显示“2的幂分布”。这对于理解数据类型中的大小分布非常有用。输出基本上详细说明了>2^x和<=2^x+1范围内给定类型的键的大小百分比。3.RDB工具对于Redis管理员来说,RDB工具是一个非常好用的工具套件。RDB工具虽然不如RMA或RedisSampler全面,但提供了3条重要信息。1.所有键的值(序列化)的大小大于B字节[用户指定的B]。2.最多N个键[用户指定N];3.特定键的大小:这是实时从数据库中读取的。该套件在GitHub上有许多活跃的贡献者,并且经常更新。多年来,维护者SripathiKrishnan因其众多工具而在Redis社区中广为人知。4.Redis-AuditRedis-Audit是一个概率工具,可以用来快速了解内存使用情况。它输出有关密钥组的有用信息,例如总体内存消耗、组中的最大TTL、平均上次访问时间、组中过期密钥的百分比等。如果您需要找出哪些内存,这是一个完美的工具占用最多。它在您的应用程序中切换键组。此外,它适用于所有Redis版本。5.RedisToolkitRedisToolkit是一个基本的监控解决方案,可以用来分析两个关键指标:命中率和内存消耗。该项目会定期更新错误修复。它有一个易于理解的界面,可以准确地为您提供所需的信息,并且适用于所有Redis版本。6.HarvestHarvest是一种概率抽样工具,可用于根据键的数量识别前10个最大的命名空间/前缀。作为一个新工具,它在GitHub上并没有引起太多关注。但是,如果您是Redis的新手并且想要确定哪种应用程序数据正在阻塞实例,Harvest是一个很好的起点。它仅适用于Redisv4.0及更高版本。我不得不说的免费工具的局限性虽然这些工具对于调试Redis实例的内存问题非常有用,但您应该了解这些免费工具的局限性。付费工具具有某种形式的数据可视化,而上述工具都没有开箱即用的功能。最好的结果是CSV输出,它可以用其他FOSS工具可视化,许多甚至没有那个选项,这使得学习曲线陡峭,特别是对于新手Redis用户。如果您可能经常进行内存分析,那么值得查看提供良好可视化效果的付费工具。另一个限制是存储历史信息的能力,也没有内存消耗随时间变化的图表,许多甚至无法分析实时数据。