面试题答案
一键面试窗口大小设置过大
- 响应时间:
- 由于窗口过大,单位时间内允许通过的请求数相对较多,可能会导致系统瞬间涌入大量请求。如果系统处理能力有限,这些请求会在系统内排队等待处理,从而显著增加响应时间。例如,一个API服务每秒最多能处理100个请求,若窗口设置为10秒,允许1000个请求在这10秒内通过,当瞬间涌入800个请求时,后续请求就需要等待前面的请求处理完,响应时间大幅上升。
- 吞吐量:
- 从短期看,吞吐量可能会有所提升,因为更多的请求被允许进入系统。但长期来看,当系统处理不过来大量涌入的请求时,会导致请求积压,部分请求可能会超时失败,反而降低了有效吞吐量。比如电商抢购场景,窗口过大使得大量用户请求涌入,服务器处理不过来,很多请求超时,实际成功完成交易的数量减少,吞吐量下降。
窗口大小设置过小
- 响应时间:
- 窗口过小意味着单位时间内允许通过的请求数很少,即使系统有足够的处理能力,也会因为限流规则限制了请求的通过,导致请求被频繁拒绝。对于被拒绝的请求,客户端可能需要重试,这就增加了请求的整体响应时间。例如,原本一个请求正常处理时间为100ms,但由于限流窗口过小被拒绝,客户端重试3次才成功,每次重试间隔100ms,那么总响应时间就从100ms增加到了400ms。
- 吞吐量:
- 由于窗口过小,大量请求被限流拒绝,系统实际处理的请求数量远低于其处理能力,直接导致吞吐量降低。比如一个服务器每秒能处理500个请求,但限流窗口设置为每秒只允许100个请求通过,那么即使服务器有剩余处理能力,吞吐量也只能维持在100个请求每秒。