
Skill
doris-debug-query
diagnose Apache Doris query performance
Description
Use for Apache Doris slow/hanging/timeout queries. Covers FE planner (Nereids timeout), BE Profile bottlenecks, and Exchange WaitForData / brpc E1008 on port 8060. Session vars: enable_profile, query_timeout, nereids_timeout_second.
SKILL.md
Query Troubleshooting
Causes
| ID | Cause | Evidence |
|---|---|---|
| A | Client timeout too small | query_timeout vs Profile wall |
| B | Planner | Nereids cost too much time / nereids_timeout_second |
| C | BE compute (scan/join/spill) | Profile active ExecTime |
| D | Exchange / brpc | WaitForData ≈ timeout; failed to send brpc when exchange; [E1008] on :8060 |
10 min
SET enable_profile = true;
-- reproduce
./scripts/doris-debug log-grep fe/log be/log --query-id "$QID" --pack planner
./scripts/doris-debug log-grep be/log --query-id "$QID" --pack exchange
./scripts/doris-debug audit-topk fe/log/fe.audit.log -k 20 --min-ms 5000
Planner mitigation (session only): SET disable_join_reorder=true; for fat ETL joins; fix stats with ANALYZE.
Cause C — BE compute (scan/join/spill)
When Profile shows high active ExecTime (not Wait*), route to doris-profile-reader for deep Profile analysis:
Skill routing: If
doris-profile-readeris available, invoke it with the query's Profile to identify which operator (scan/join/agg/spill) dominates. Key indicators to pass:
ActiveTimeper operatorRowsRead/ScanBytesfor scan operatorsSpillDataSizeif disk spill occurredJoinType+JoinRowsfor join operators
Without profile-reader, check directly:
# Get the Profile text
curl -s "http://$FE:8030/api/query_profile?query_id=$QID"
Key Profile counters for Cause C:
| Counter | Meaning | Threshold |
|---|---|---|
ScannerGetBlockTime | Time reading from storage | > 50% of ExecTime → IO bound |
SpillDataSize | Data spilled to disk | > 0 → memory pressure, check enable_spill |
JoinProbeTime | Hash join probe wall time | > 30% → check join order / type |
RowsRead / ScanBytes | Scan volume | > 1B rows → check partition pruning |
Profile interpretation: prefer active time over Wait*.
Cause D — Exchange / brpc
Code facts (apache/doris):
- Error text in
be/src/exec/operator/exchange_sink_buffer.h. GET /api/reset_rpc_channel/{endpoints}clearsbrpc_internal_client_cacheonly (reset_rpc_channel_action.cpp).enable_brpc_connection_check(default false) →FragmentMgr::_check_brpc_availablehand_shake; consecutive failures erase internal cache.
curl -s "http://$BE:8040/api/reset_rpc_channel/all"
# be.conf — restart for static DEFINE_Bool
enable_brpc_connection_check = true
brpc_connection_check_timeout_ms = 10000
Do not trust ICMP alone. Check priority_networks.
Source
SessionVariable.java—QUERY_TIMEOUT,NEREIDS_TIMEOUT_SECOND- Profile WaitForData — exchange source operator
exchange_sink_buffer.h,reset_rpc_channel_action.cpp,fragment_mgr.cpp
More skills from the doris-skills repository
View all 14 skillsdoris-architecture-advisor
design Apache Doris data architectures
Jul 12ArchitectureData EngineeringData PipelineDatabasedoris-best-practices
optimize Apache Doris table design and clusters
Jul 12DatabaseEngineeringPerformancedoris-debug
diagnose Apache Doris production issues
Jul 25DebuggingMonitoringOperationsdoris-debug-cloud
debug Apache Doris cloud mode issues
Jul 25CloudDebuggingPerformancedoris-debug-compaction
resolve Apache Doris compaction lag
Jul 25DatabaseDebuggingPerformancedoris-debug-data-lake
debug Apache Doris data lake connectivity
Jul 25Data EngineeringDatabaseDebugging
More from Apache Software Foundation
View publisherdatafusion-python
write Apache DataFusion Python code
datafusion-python
Jul 12Data AnalysisPythonSQLbydbql
generate and execute BanyanDB BydbQL queries
skywalking-banyandb
Jul 12AnalyticsDatabaseSQLcompiling
compile and build BanyanDB projects
skywalking-banyandb
Jul 12BuildEngineeringgh-pull-request
create GitHub pull requests for BanyanDB
skywalking-banyandb
Jul 12GitHubPull Requestsvendor-update
update Go and Node.js vendor dependencies
skywalking-banyandb
Jul 12GoNode.jscayenne-cgen
generate Cayenne entity Java classes
cayenne
Jul 12Data ModelingJavaORM