redis - 试图了解 Redis ping 延迟测试与 Ping 命令延迟测试

标签 redis ping latency

我正在尝试了解延迟与每秒可处理的最大请求数。

我对 RTT 的理解是消息到达目的地和确认返回源所花费的时间。所以我假设服务器每秒只能服务最大请求,不应超过给定秒内平均往返的总和。我的本地 ping 测试显示为

> ping 127.0.0.1 
rtt min/avg/max/mdev = 0.089/0.098/0.120/0.012 ms

仅网络往返平均需要 0.098 毫秒,这意味着 10 次 ping 请求/毫秒。所以我假设按顺序,客户端最多只能执行 10_000 个请求/秒。而事实证明我错了。 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 个请求/毫秒,而我期望最多 10 个请求/毫秒。

任何人都可以帮助我哪里出错或被误解了吗?

最佳答案

即使使用单个逻辑客户端线程,命令也可以流水线化,这意味着:您可以在第一个响应返回之前发送很多 请求。响应总是按请求顺序返回(除非您使用的是发布/订阅),因此流水线客户端只需要保留一个尚未看到响应的已发送消息队列,并在请求到达时将响应配对。

因此:您不受延迟的严格限制,尽管延迟仍然是一个有用的数字。原始吞吐量(受带宽和服务器容量限制)有意义,因为通常情况下您想要发出多个命令。

关于redis - 试图了解 Redis ping 延迟测试与 Ping 命令延迟测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49749642/

相关文章:

c++ - 由周期性 sendto()/recvfrom() 延迟引起的 UDP 套接字的周期性延迟峰值,Linux RT-PREEMPT 系统的 C++

performance - 如何在两个版本不同的Aerospike群集3.8和3.14之间比较服务器端的延迟和超时?

redis - Redis如何存储复杂的数据?

python - python 记录 ping 结果?

client-server - 使用时间戳验证位置差异时如何考虑延迟差异(反作弊)?

powershell - 将测试连接转换为 bool 值

linux - Linux 中两种不同的网关以及被动网关的 ping

Redis 与 DocumentDB?

具有持久存储功能的 Redis 流

redis - redis 中的多个 RPOPLPUSH