技能开发 频道

免费又好用,六大Redis内存剖析东西引荐

  【IT168 技能】市道上有许多免费开源或许付费的东西来剖析Redis实例的内存运用情况,其间最受欢迎的便是Jacks,可是假如你想要更深化的剖析你的内存问题,那么运用更有针对性的的东西或许会是更好的挑选。

  本文中,咱们将为咱们引荐剖析Redis实例内存运用情况最有用的免费东西Top 6:

  1. Redis Memory Analyzer (RMA)

  2. Redis Sampler

  3. RDB Tools

  4. Redis-Audit

  5. Redis Toolkit

  6. Harvest

  1)Redis Memory Analyzer(RMA)

免费又好用,六大Redis内存剖析东西引荐

  Redis Memory Analyzer(RMA)是Redis最全面的FOSS内存剖析器之一,支撑三个不同等级的剖析:

  Global - 内存运用信息概述。

  Scanner - 最高等级的密钥空间/前缀级内存运用信息,换句话说便是运用最短的共用前缀。

  RAM - 最初级密钥空间/前缀,换句话说便是运用最长的共用前缀。

  这三种方式都各有自己的用处,感兴趣的朋友能够去RMA ReadMe中检查更多的具体信息。

  RMA - Global方式

免费又好用,六大Redis内存剖析东西引荐

  在大局方式下,RMA供给一些高档核算信息,如密钥数量、体系内存、resident集巨细,密钥空间巨细等。其间比较特别的功用是“密钥空间开支”,Redis体系运用的内存存储与密钥空间相关的信息,例如列表数据结构的指针。

  RMA - Scanner方式

免费又好用,六大Redis内存剖析东西引荐

  在Scanner方式下能够概览密钥空间。它供给高档命名空间、项目类型和该命名空间占用的内存百分比。将这些信息和命名空间方式下的RAM行为相结合能够进行具体剖析。

  RMA - RAM方式

免费又好用,六大Redis内存剖析东西引荐

  在RAM方式下能够得到了密钥空间等级的内存耗费,这和其他大多数FOSS内存剖析器供给的相同,咱们能够取得运用的内存、实践数据巨细、开支、编码、TTL最小值和最大值的具体信息等等,这有助于查明咱们体系中最大的记忆棒。

  不过,惋惜的是这个东西的更新频率很低,GitHub上最近的一次更新也已经是一年前了,但这并不影响它是咱们发现的最好的剖析东西之一。

  RMA装置和运用:

  RMA需求在体系上装置Python和PIP(两者均适用于一切首要操作体系)。装置完结后,履行一个指令来装置RDB东西 - “pip install rma”。假如要运用指令行也很简略,"rma [-s HOST] [-p PORT] [-a PASSWORD] [-d DB] [-m pattern-to-match] [-l number-of-keys-to-scan] [-b BEHAVIOUR] [-t comma-separated-list-of-data-types-to-scan]"。

  RMA长处:

  ·实时性。

  ·运用扫描指令遍历数据库,因而功能影响是有限的,而剖析十分精确。

  ·记载齐备,很简略找到运用示例。

  ·支撑强壮的自定义和过滤选项,包含只剖析特定的数据类型,或许只考虑匹配特定方式的密钥)。

  ·供给不同等级的具体信息,例如命名空间,键或大局值。

  ·绝无仅有的审计东西,可显现了数据结构的开支。

  RMA缺陷:

  ·不支撑概率抽样。线性扫描数据库关于大型数据库来说或许十分慢,能够挑选一旦回来必定数量的密钥来中止扫描以进步功能。

  ·输出中有许多细节; 尽管对专家有协助,但它或许仅仅为了混杂新手。

  2)Redis Sampler

  Redis Sampler是一个十分强壮的东西,能够深化了解Redis实例的内存运用情况。它由Redis开发人员antirez维护,尽管该东西不常常更新,可是暴露出的问题却很少。

免费又好用,六大Redis内存剖析东西引荐

  Redis Sampler对数据库进行概率性扫描并陈述以下信息:

  ·各种数据类型中key的百分比散布,这儿指的是Key的数量。

  ·依据strlen字符串类型的最大key以及它们耗费的内存百分比。

  ·关于其他数据类型,核算最大的key并将其显现为两个独自的列表:一个是依据目标的巨细,另一个是依据目标中项目的数量。

  ·关于每种数据类型,显现“Power of 2 distribution”。这关于了解数据类型内的巨细散布十分有用。输出成果根本上会具体阐明给定类型的key的巨细在> 2 ^ x和<= 2 ^ x + 1范围内的百分比。

  Redis Sampler装置和运用:

  这是一个独自的Ruby脚本,所以需求提早装置Ruby,一同还需求装置“rubygems”和“redis”gems,运用方法很简略,直接履行指令行代码 “./redis-sampler.rb”。

  Redis Sampler长处:

  ·运用简略。

  ·输出成果完好明晰,即使是初学者也很简略了解,关于Redis专家来说,输出成果供给的信息足以,可是有满足的信息能够让专家对Redis实例进行十分具体的剖析。这些部分清晰区分并易于过滤。

  ·适用于一切Redis版别。

  ·不运用任何像DEBUG OBJECT这样的特权指令,因而它能够在任何体系上运用,包含Amazon的ElastiCache。

  ·它运用特定于数据类型的长度指令来标识数据巨细,因而陈述的运用情况不受序列化的影响。

  ·适用于实时数据。尽管主张在loopback接口上运转,但它支撑采样长途体系。

  Redis采样器缺陷:

  假如样本巨细设置为高于数据库基数,则它仍将运用RANDOMKEYS而不是SCAN。

  没有绑缚包或Docker镜像可用。你有必要手动装置依靠联络(尽管很明显,只需2个依靠联络)。

  陈述数据巨细,由于数据结构存储开支,数据巨细与RAM上占用的空间不完全匹配。

  假如您的Redis实例需求身份验证,则无法正常运用。您需求修正脚本以获取暗码; 以最简略的方式查找:redis = Redis.new(:host => ARGV [0],:port => ARGV [1] .to_i,:db => ARGV [2] .to_i)并将其更改为: redis = Redis.new(:host => ARGV [0],:port => ARGV [1] .to_i,:db => ARGV [2] .to_i,:password =>“add-your-password-here” )

  3)RDB Tools

免费又好用,六大Redis内存剖析东西引荐

  RDB Tools关于要求严厉的Redis管理员是十分有用的东西,只需咱们想到的用处RDB Tools都有对应的用例,不过本文中咱们将专心于内存剖析,尽管没有RMA或Redis Sampler那么全面,但RDB Tools也供给了三个重要的信息:

免费又好用,六大Redis内存剖析东西引荐

  1)值(串行化)巨细大于B字节[B由用户指定]的一切键。

  2)最大的N个键[N由用户指定]。

  3)特定键的巨细:这是从数据库中实时读取的。

  该套件在GitHub上有许多活泼的贡献者,常常更新,一同RDB的维护者 Sripathi Krishnan在Redis社区中也供给了许多东西。

  RDB东西装置和运用:

  RDB Tools需求在体系上装置Python和PIP(两者都适用于一切首要操作体系)。装置完结后,履行一条指令来装置RDB东西 - “pip install rdbtools python-lz”

  运用方法:

  取得200个最大密钥:rdb -c memory /var/redis/6379/dump.rdb -largest 200 -f memory.csv

  获取大于128字节的一切密钥:rdb -c memory /var/redis/6379/dump.rdb --bytes 128 -f memory.csv

  获取密钥的巨细:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

  RDB Tools长处:

  ·输出CSV文件,该文件能够与其他FOSS东西一同运用,并轻松创立数据可视化,导入到RDBMS-es中运转剖析。

  ·有据可查。

  ·支撑自定义和过滤选项,能够取得更多有用的陈述。

  RDB Tools缺陷:

  ·RDB Tools剖析不适用于实时数据,有必要进行RDB转储。陈述的内存运用量是序列化的内存,与RAM上占用的内存不完全相同。

  ·没有任何内置的分组支撑,因而无法找到最大的命名空间。

  4)Redis-Audit

  Redis-Audit是一个概率性东西,可用于快速检查内存运用情况,输出要害组的有用信息,如全体内存耗费,组中的最大TTL,均匀前次拜访时刻,过期的密钥百分比等。

  Redis-Audit装置和运用:

  首要,需求装置Ruby和Bundle,装置完结后,将Redis-Audit存储库克隆到某个文件夹,或许下载该zip并将其解压缩到一个文件夹,运转bundle install完结装置。

  用法简略:运转"execute"

  redis-audit.rb hostname [port] [password] [dbnum] [sample_size]

  Redis-Audit长处:

  ·答应为keyspace/prefix grouping自定义正则表达式。

  ·适用于一切Redis版别。

  ·假如样本量大于实践的密钥数量,它将遍历一切密钥。别的,该操作运用key *而不是扫描,而这或许会阻挠其他操作。

  Redi-Audit缺陷:

  ·运用DEBUG OBJECT command(在ElastiCache中不行用),因而,它会陈述序列化巨细,这与RAM上占用的实践巨细不同。

  ·输出不能被快速解析。

  5)Redis Toolkit

  Redis Toolkit是一款根本的监控解决方案,可用于剖析两个要害目标:命中率和内存耗费。尽管该项目会定时更新过错修正,可是惋惜的是并没有一些杰出的东西杰出。

  Redis Toolkit的装置和运用:

  首要,需求在体系上装置Docker,并克隆GitHub存储库(或许下载为zip并解压到一个文件夹)。用法根本都是经过一系列简略的指令来完结。

  ·要开端监督命中率: ./redis-toolkit monitor

  ·陈述命中率: ./redis-toolkit report -name NAME -type hitrate

  ·要中止监督命中率:./redis-toolkit stop

  ·要在本地体系上创立转储文件:./redis-toolkit dump

  ·陈述内存运用情况:./redis-toolkit report -type memory -name NAME

  Redis Toolkit长处:

  ·易于了解的界面,供给所需的切当信息。

  ·将前缀分组到任何等级。

  ·适用于一切Redis版别; 不需求拜访像DEBUG OBJECT这样的特权指令。

  ·有据可查。

  Redis Toolkit缺陷:

  ·内存剖析不是实时的,由于它在序列化转储上作业,所陈述的内存运用量将不等于实践的RAM耗费量。

  ·有必要在运转Redis Toolkit的核算机上创立转储,假如您有长途Redis实例,那么或许需求等候一段时刻。

  ·监督命中率运用MONITOR指令来捕获服务器上运转的一切指令,这种做法或许会下降功能,从而或许会影响出产。

  ·命中率核算为| GET | /(| GET | + | SET |),所以假如一个值常常改变,它的命中率会更低。

  6)Harvest

  这是一个概率抽样东西,可用于依据密钥的数量来标识10个最大的称号空间/前缀,但由于是一个新东西,所以现在在GitHub上还没有很高的人气,不过,假如你是Redis新手,想要确认哪种应用程序数据堵塞了实例,那么Harvest肯定是最简略的挑选。

  Harvest装置和运用:

  作为Docker镜像下载,一旦映像准备就绪,可用CLI中的指令“docker run --link redis:redis -it --rm 31z4 / harvest redis:// redis-URL”来运转该东西。

  Harvest长处:

  ·适用于实时数据。

  ·运用“memory usage”指令来获取巨细信息,因而能够给出精确的巨细信息(而不是序列化的巨细),而且不需求拜访DEBUG OBJECT指令。

  Harvest缺陷:

  ·适用性有限制,难以找到其他用例。

  ·该东西仅适用于Redis v4.0及更高版别。

  ·文档较少。

0
相关文章