Apache Druid Router出现Jetty Client超时,调整maxIdleTime无效求助
Druid Router查询超时问题排查
我的Druid集群包含1个Router Pod和1个Broker Pod,查询处理耗时过长导致Router端出现超时错误,错误信息如下:
java.util.concurrent.TimeoutException: Total timeout 300000 ms elapsed 32881at org.eclipse.jetty.client.HttpConnection$RequestTimeouts.onExpired(HttpConnection.java:334) ~[jetty-client-9.4.48.v20220622.jar:9.4.48.v20220622] 32882at org.eclipse.jetty.client.HttpConnection$RequestTimeouts.onExpired(HttpConnection.java:314) ~[jetty-client-9.4.48.v20220622.jar:9.4.48.v20220622] 32883at org.eclipse.jetty.io.CyclicTimeouts.onTimeoutExpired(CyclicTimeouts.java:110) ~[jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622] 32884at org.eclipse.jetty.io.CyclicTimeouts.access$100(CyclicTimeouts.java:50) ~[jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622] 32885at org.eclipse.jetty.io.CyclicTimeouts$Timeouts.onTimeoutExpired(CyclicTimeouts.java:196) ~[jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622] 32886at org.eclipse.jetty.io.CyclicTimeout$Wakeup.run(CyclicTimeout.java:298) ~[jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622] 32887at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] 32888at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] 32889at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?] 32890at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?] 32891at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?] 32892at java.lang.Thread.run(Thread.java:829) ~[?:?]
已调整druid.server.http.maxIdleTime为PT6H,但超时问题仍未改善,请问还有哪些遗漏的配置属性需要调整?
需检查调整的关键配置项
Router 侧配置
druid.router.http.client.connectTimeout:Router与Broker建立连接的超时时间,默认值较短,需调大至适配场景的值(例如PT5M)druid.router.http.client.socketTimeout:Router与Broker通信的Socket超时时间,需设置为足够覆盖查询处理时长的值druid.router.http.client.requestTimeout:Router等待Broker响应的总超时时间,对应报错中的300000ms(5分钟),需调大至合理值(例如PT30M)
Broker 侧配置
druid.broker.http.maxIdleTime:Broker的HTTP连接空闲超时,需与Router端的配置保持匹配druid.query.timeout:Broker处理单个查询的最大超时时间,必须设置得比Router的requestTimeout更长,否则Broker会主动终止查询,进而触发Router的超时
通用HTTP服务配置
- 检查Broker和Router的
druid.server.http.maxRequestTime:这是HTTP请求的最大处理时长,需调大以适配长查询需求
配置注意事项
所有相关配置需同时在Router和Broker的配置文件中调整,确保超时时间链连贯:Router的请求超时 > Broker的查询超时 > 实际查询预期耗时,避免出现上游先于下游终止连接的情况。
内容的提问来源于stack exchange,提问作者Thomas Raffelsieper
相关产品推荐
相关产品推荐

