第95百分位如何确定客户端的默认超时设置



我有一个客户端库,它使用RestTemplate调用我的服务,并以字符串形式获得响应,然后将此响应字符串返回给正在使用我们客户端的客户。

现在我们客户端的整体SLA(第95百分位)是~15 ms,这意味着95%的时间,呼叫应该在~15 ms内从我们的客户端返回。我们的客户端内部的默认超时设置是~500 ms.

在我们的客户端上做了一些负载和性能测试后,性能看起来相当不错,95%的时间,呼叫在~10毫秒内恢复。

问题陈述:-

现在我的问题是-

  • 正如我上面提到的,在我们的客户端内部默认超时值是~500毫秒,然后在我们的负载和性能测试之后,第95百分位数是~10毫秒。我在某个地方读到,你总是应该设置更高的超时值,然后你当前的SLA,这样你就应该允许所有的呼叫通过,然后测量第95个百分位数。这是真的吗?或者我应该在客户端内部设置60-70毫秒的超时设置?但我猜,在这种情况下,大多数调用都会超时?
  • 如果我在客户端上将内部默认超时间设置为~50 ms,那么根据我的理解,第95百分位数将不会在~15 ms内,因为我们不允许所有呼叫通过。对吧?

我只是想理解一些事情,意思是如果超时值设置得相当高,那么与我们的SLA相比,它决定了第95百分位,而超时值设置得非常接近我们的SLA?这意味着如果SLA是~15 ms,如果我将超时值设置为~100 ms,而如果SLA是~15 ms,然后如果我将超时值设置为~500 ms。

你需要更精确。它的意思不是"95%的时间"。它意味着"95%的已完成呼叫""95%的所有呼叫,包括完全失败"。可能是后者,但您需要检查。

那么你需要做两件事。

  1. 对于合规性测试,设置超时= SLA,以便您可以测量您是否符合。
  2. 然后在生产环境中设置一个合理的超时。15ms和500ms对于生产超时来说都太短了。我会将它设置为至少几秒,可能高达30秒。一条经验法则是将其设置为预期服务时间的两倍,但在这种情况下,这太短了。

相关内容

  • 没有找到相关文章

最新更新