P99延迟代表什么?在关于应用程序性能的讨论中,我经常听到这一点,但在网上找不到谈论这一点的资源。


是第99百分位。这意味着99%的请求应该比给定的延迟更快。换句话说,只有1%的请求被允许变慢。

我们可以通过一个类比来解释,如果100名学生参加比赛,那么99名学生应该在“延迟”时间内完成比赛。

假设您正在收集服务的性能数据,下表是结果的集合(延迟值是虚构的,以说明这个想法)。

Latency    Number of requests
1s         5
2s         5
3s         10
4s         40
5s         20
6s         15
7s         4
8s         1

您的服务P99延迟为7秒。只有1%的请求需要超过这个时间。因此,如果可以降低服务的P99延迟,就可以提高其性能。

让我们从这里举个例子

Request latency:
    min: 0.1
    max: 7.2
    median: 0.2
    p95: 0.5
    p99: 1.3

所以我们可以说,99%的web请求,发现的平均延迟是1.3ms(毫秒/微秒取决于您配置的系统延迟度量)。 就像@tranmq说的,如果我们降低服务的P99延迟,我们就可以提高它的性能。

同样值得注意的是p95,因为可能很少的请求使得p99比p95更昂贵,例如,构建缓存的初始请求,类对象的预热,线程初始化等。 所以p95可能会剔除这5%的最坏情况。在这5%之外,我们不知道真实噪声情况和最坏情况输入的百分比。

最后;在我们的测量中可能有大约1%的噪声(比如网络拥塞、中断、服务降级),所以p99延迟实际上是最坏情况的一个很好的代表。而且,我们的目标几乎总是减少p99延迟。

通过一个类比来解释P99: 如果有100匹马参加比赛,那么99匹马应该在小于或等于“延迟”时间内完成比赛。只有一匹马可以在“延迟”时间之前完成比赛。

这意味着如果P99是10ms,那么99%的请求的延迟应该小于或等于10ms。

如果p99值为1ms,这意味着100个请求中有99个请求花费的时间小于1ms,而1个请求花费的时间大约为1或超过1ms。