Java面试题更新 2026-08-05

请描述 Dubbo 线程池的调优策略,包括常见线程池类型、参数配置和问题排查方法。

性能优化技术原理问题排查Apache Dubbo

考察说明

考查对 Dubbo 线程池原理与调优实践的理解。

回答思路

  1. 【回答框架 1】Dubbo 默认使用 FixedThreadPool,核心线程数和最大线程数相等,默认 200。可通过 dispatch 和 threads 参数调整,例如 <dubbo:provider threads="300"/> 或消费者侧 threads。
  2. 【回答框架 2】线程池类型包括 fixed、cached、limited 等,fixed 适合稳定负载,cached 适合突发流量但需注意资源耗尽风险,limited 可配置队列长度。选择依据业务并发模型。
  3. 【回答框架 3】调优步骤:先通过监控(如 Dubbo Metrics、线程池活跃数和队列积压)评估当前瓶颈;再调整核心线程、最大线程和队列容量;最后进行压测验证,关注响应时间和吞吐量。
  4. 【回答框架 4】常见问题:线程池满了导致拒绝服务,可通过 threads 调大或使用 ThreadPoolExecutor 的拒绝策略(如 CallerRunsPolicy)优化;避免线程数设置过大造成资源争用。
  5. 【关键点 1】默认线程池为 fixed,线程数 200,可动态调整。
  6. 【关键点 2】合理设置线程数需结合任务类型(CPU/IO)和压测结果。
  7. 【关键点 3】监控线程池活跃度和队列长度是定位问题的基础。
  8. 【易错点 1】不区分任务类型盲目调大线程数,可能导致上下文切换开销增加。
  9. 【易错点 2】忽略队列大小,队列过长会导致请求延迟增加。