of drdr.xp Blog drdrxp @weibo.com

1% 慢请求优化

1个客户端同时向服务器发出100个请求,等待所有的请求都返回才算成功。
99%的请求10ms返回,1%的请求1000ms返回.

假设慢请求的概率是 ,请求总数是 . 能快速(10ms)返回的概率有多少?如何优化?

所有请求都能在10ms内返回的概率只有 36%:

第1个请求能在10ms内返回的概率是:
第1个请求和第2个请求都能在10ms内返回的概率是:

所有请求都在10ms内返回的概率是:

通过重试提高成功率

但如果假设可以重试多次,情况会好得多.

对每1个请求,如果第1次没有在10ms内返回,则立即中断,立即发起1次重试. 则两次都超时的概率是: .

因此,对每个请求,重试两次,成功的概率是: .
所有请求都允许最多重试2次,则全部都成功的概率是: . 总耗时20ms.
如果允许重试3次,成功率是: . 总耗时30ms.

重试次数与请求成功率的关系

重试次数 请求耗时 成功率
1 10ms 36%
2 20ms 99.00%
3 30ms 99.99%
Archive