redis 使用memtier_benchmark;每个键都丢失

pn9klfpd  于 6个月前  发布在  Redis
关注(0)|答案(3)|浏览(67)

我的失误/秒被填充,没有命中。
数据包含的键范围从1到300 K,存储的数据是字符串类型

memtier_benchmark -s xx.xxx.xxx.xxx -p xxxxx -P redis -t 1 -n 1 --ratio 0:1 -c 1 -x 2 --key-pattern S:S --authenticate=xxxxxxx --key-prefix=

字符串

aoyhnmkz

aoyhnmkz1#

memtier_benchmark在这方面的文档非常少,如果你在第一次运行时使用它,它不会模拟任何缓存命中,这对于一个测试缓存性能的工具来说是非常无用的。
这里的两个关键参数是:

--key-pattern=[SET:GET]
--ratio=[SET:GET]

字符串
--key-pattern定义了设置的键的名称和请求的键的名称。例如,如果您使用S:S,这意味着软件将第一个键设置为memtier-0,然后立即请求memtier-1,然后设置memtier-1,然后请求memtier-2(Go figure...)。这就是为什么您会得到100%的miss结果。
如果你设置了R:R,这意味着软件会在Set和Get中随机设置keyname中的数字。这通常会导致> 90%的未命中率,具体取决于你设置了多少个客户端和线程。如果你正在运行一个未命中率> 90%的缓存,那么你是否应该运行缓存就值得怀疑了,所以再次强调,这是相当无用的。
为了模拟真实的世界缓存应该做的事情,您希望未命中率<50%。为了实现这一点,您需要扩展获取超过集合的数量。memtier_benchmark的默认值是1:10,但同样,在第一次运行时(或者,如果您持续对冷缓存运行此操作),并将--key-pattern=S:S作为默认值,你仍然会得到一个非常高的未命中率。如果你继续对你不断填充的同一个缓存重复测试,你应该会看到你的未命中率开始下降,但是,如果您在一个短暂的环境中进行测试,这可能不是您可以依赖的东西。
为了在第一次运行时获得较低的未命中率,我使用:用途:

--key-pattern=S:R --ratio=1:20


这应该会导致未命中率<50%。这是我能够模拟的最好的结果。我的实际缓存将具有<5%的未命中率。我仍在试图找出一种方法来用memtier_benchmark测试。
此外,使用--hide-histogram来摆脱恼人的测试结果转储。
编辑:
为了实现100%命中率/ 0%未命中率,请执行以下操作:
从一个冷的、空的缓存开始
运行一个使用-ratio=参数的测试,以便在非常窄的键范围内仅将Sets包含在测试中:

--hide-histogram --key-pattern=S:S --key-minimum=1 --key-maximum=50 --ratio=1:0


现在,再次运行测试,这一次,翻转比率,只包含Gets

--hide-histogram --key-pattern=S:S --key-minimum=1 --key-maximum=50 --ratio=0:1


然后,您可以通过重新运行这两个部分并扩展--key-maximum=值来调整命中/未命中率。

a8jjtwal

a8jjtwal2#

你的比率是0 set add 1 get。把它改成1:1或类似的值。

2admgd59

2admgd593#

在尝试只读基准测试之前,您需要填充memcached。
要填充它,您可以运行只写工作负载来至少一次写入所有键。

相关问题