我正在尝试了解延迟与最大数量或每秒可以提供的请求。
我的理解RTT是消息到达目的地并确认回源的时间。所以我假设服务器每秒只能提供最大请求数不应超过一秒的平均往返总和。我的本地ping测试显示为
> ping 127.0.0.1
rtt min/avg/max/mdev = 0.089/0.098/0.120/0.012 ms
平均只需要0.098 ms用于网络往返,这意味着10 ping req / ms。所以我假设按顺序,客户端最多只能执行10_000 req / sec。虽然事实证明我错了。 redis-benchmark工具显示了不同的东西。
> redis-benchmark -t set -c 1 -h 127.0.0.1
====== SET ======
100000 requests completed in 2.53 seconds
1 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 1 milliseconds
39588.28 requests per second
单个客户端能够执行39 req / ms,而我期望最大10req / ms。
任何人都可以在我出错或误解的地方帮助我吗?
答案 0 :(得分:0)
即使使用单个逻辑客户端线程,命令也可以进行流水线操作,这意味着:您可以在第一个响应返回之前发送批次请求。响应总是以请求顺序返回(除非您使用pub / sub),因此流水线客户端只需要保留已发送消息的队列,这些消息尚未看到响应,并在请求到达时将响应配对。
所以:你并没有受到延迟的严格限制,尽管这仍然是一个有用的数字。原始数字(受带宽和服务器容量限制)也有意义,因为通常情况下您要发出多个命令。