标准答案

  1. 核心并发决定常态执行槽,队列吸收短暂突发,最大并发限制扩容后的资源使用,拒绝策略定义容量耗尽时的可观察行为。
  2. 有界队列能把无限内存等待转换为明确拒绝、降级或调用方背压;队列过大则可能让请求在超时前一直排队。
  3. 拒绝可以快速失败、由调用方执行、丢弃低价值任务或转入可靠队列,必须按业务重要性选择。
  4. 参数应通过负载测试和下游容量确定,并监控活跃数、队列等待和拒绝率。

题目解析

执行器的核心并发、队列和最大并发共同定义了系统可以接受多少工作以及工作最多等待多久。只改其中一个参数,可能把线程竞争、内存占用或用户超时推到另一个位置。

拒绝不是实现失败,而是容量耗尽时的业务选择。在线请求可以快速返回可重试错误,低价值任务可以降级,高价值任务则应转入可靠存储;关键是让调用方知道工作是否被接受。

容量验证要看任务服务时间和下游资源,而不是只看执行器自身的吞吐。线程池可能在等待数据库连接,队列可能堆满已经过期的请求,这些都需要在压测中体现。

常见误区

  • 误区:只调大最大线程数。改正:先判断瓶颈是 CPU、锁、连接池还是下游服务,盲目扩线程会增加竞争和尾延迟。
  • 误区:用无界队列避免看到拒绝。改正:有界队列才能提供可解释的背压;同时设置任务过期、降级或转存策略。
  • 误区:拒绝策略静默丢弃关键任务。改正:为每类任务定义可观察的返回状态、告警和补偿路径,不能让“提交成功”与“实际接收”混淆。

作者信息