粗略估计客户端 - 服务器系统中的往返时间

时间:2012-01-26 09:16:28

标签: performance architecture client-server n-tier-architecture

我想知道关于客户端 - 服务器环境中不同实体的往返时间的经验法则。时间安排是为了理解在调用链的不同部分提出请求的成本。也就是说,了解系统可能出现的SELECT N + 1问题的影响。假设我们有以下实体

client <-> server <-> dbserver <-> disc access (on db server)

假设

  • 客户端通过互联网与服务器连接
  • 服务器和dbserver连接在同一台交换机上
  • dbserver具有合理的内部硬盘
  • 客户端请求很小,并且服务器的结果相同。每个人都在1-4 KB的范围内。

时间可能包括发送数据,处理另一端以及返回新数据。

我的直觉告诉我

客户&lt; - &gt;服务器是1-2秒

服务器&lt; - &gt; dbserver 200毫秒

dbserver&lt; - &gt; harddrive 15-40毫秒

你有什么经历?

1 个答案:

答案 0 :(得分:2)

  • Clinet ping到服务器~100ms(往返时间)
  • 客户端连接~512KB / s UP~1MB / s DOWN(廉价宽带/ DSL)
  • 服务器ping到DB~1ms
  • 服务器连接(到DB)~10MB / s UP~10MB / s DOWN(便宜的LAN连接)
  • DB硬盘“随机”读/写~2MB / s READ~1MB / s WRITE(HDD)
    • 但DB可能会被缓存在RAM~6GB / s带宽

从客户端到服务器发送4KB~57ms((4KB / 512KB / s)+0.050s) 服务器的处理时间〜1ms 从服务器发送4KB到db~1ms((4KB / 10MB / s)+ 0.001s) 处理时间为db~1ms 读取db~1ms的RAM或读取db~2ms(4KB / 2MB / s)的硬盘读取 从db发送4KB到服务器~1ms 从服务器到客户端发送4KB~54ms((4KB / 1MB / s)+0.050s)

总往返行程~117ms (57ms + 1ms + 1ms + 1ms + 2ms + 1ms + 54ms)


问题在于很多层次上的asinine。大多数IT专业人员不会尝试估算他们可以通过简单的定时测试获得的价​​值。不同的硬件会大大改变结果。