我试图通过运行memaslap来了解memcached的行为。
我使用的命令是
memaslap -s localhost:11212 -T 64 -c 64 --verbose -S 1s -t 30s
这是我得到的输出(在本地机器上)
Get Statistics (3157196 events)
Min: 36
Max: 17957
Avg: 545
Geo: 533.99
Std: 167.05
Log2 Dist:
4: 0 0 11 271
8: 2813 1379137 1706845 66407
12: 1110 446 152 4
Set Statistics (350829 events)
Min: 60
Max: 16184
Avg: 547
Geo: 536.33
Std: 161.65
Log2 Dist:
4: 0 0 3 28
8: 313 151210 191252 7861
12: 112 40 10
Total Statistics (3508025 events)
Min: 36
Max: 17957
Avg: 545
Geo: 534.22
Std: 167.17
Log2 Dist:
4: 0 0 14 299
8: 3126 1530347 1898097 74268
12: 1222 486 162 4
cmd_get: 3157252
cmd_set: 350837
get_misses: 1716802
written_bytes: 608669765
read_bytes: 1610227982
object_bytes: 381710656
Run time: 30.0s Ops: 3508089 TPS: 116914 Net_rate: 70.5M/s
正如你所看到的,我的get_misses数量为1716802,超过了memaslap发送的get请求的50%。我很好奇get_miss意味着什么。我检查了文档 http://docs.libmemcached.org/bin/memaslap.html 并且明白地说
get_misses
无法从服务器获取多少个对象 不从服务器获取密钥是什么意思?是因为密钥不存在还是因为延迟? 如果是因为密钥不存在,那么通过发送此请求究竟是什么memaslap测试?
答案 0 :(得分:0)
它表示在运行get命令时我们有多少次缓存未命中,换句话说 - 找不到密钥的次数。
缓存未命中的主要原因是驱逐。 Memcached会抛出一些内存不足的空间来为新的空间腾出空间。
如果memcached将使用更多的RAM(例如:get_misses
用于1 Gb的RAM),-m 1G
的数量应该下降