
Skill
doris-debug-resource-isolation
debug Apache Doris resource isolation issues
Description
Use for Doris Workload Group / resource tag queue starvation, CPU/memory isolation leaks, and workload policy debugging. Commands: SHOW WORKLOAD GROUPS, EXPLAIN resource.
SKILL.md
Resource Isolation (Workload Group)
Causes
| ID | Cause | Evidence | Source anchor |
|---|---|---|---|
| A | Queue starvation | Queries queued in SHOW WORKLOAD GROUPS; QueueTime growing | WorkloadGroupMgr.java |
| B | CPU oversubscription | One WG consuming >90% CPU despite limits | CgroupCpuCtl.cpp |
| C | Memory leak across groups | MemTracker shows one WG exceeding memory_limit | WorkloadGroupMemMgr.cpp |
| D | Tag routing wrong | Query hits wrong BE set; ResourceTag mismatch | ResourceTag.java, Tag.java |
| E | WG not active / cgroup missing | CREATE WORKLOAD GROUP had no effect | WorkloadGroupMgr.cpp cgroup init |
10 min triage
-- Workload group status
SHOW WORKLOAD GROUPS\G
-- Check columns: Id, Name, ActiveQueries, QueuedQueries, CpuShares, MemoryLimit
-- Which WG is my query in?
SELECT * FROM information_schema.workload_group_resource_usage;
-- Workload policies (routing rules)
SHOW WORKLOAD POLICY\G
# BE cgroup inspection
cat /sys/fs/cgroup/cpu/doris/<wg_id>/cpu.shares
cat /sys/fs/cgroup/memory/doris/<wg_id>/memory.limit_in_bytes
./scripts/doris-debug be-metrics --be http://$BE:8040 --grep "workload_group"
Cause A — Queue starvation
-- See who's queued
SHOW WORKLOAD GROUPS\G
-- Raise queue concurrency
ALTER WORKLOAD GROUP etl_wg SET (
"max_concurrency" = "8",
"max_queue_size" = "100",
"queue_timeout" = "300"
);
Check be/src/pipeline/task_scheduler.cpp — the pipeline scheduler respects cgroup shares; if a high-share WG starves a low-share one, the low-share WG's queue backs up.
Cause B — CPU oversubscription
-- Create a hard CPU cap
ALTER WORKLOAD GROUP report_wg SET (
"cpu_share" = "1024",
"cpu_hard_limit" = "200%" -- 2 cores max
);
-- Force query into specific WG
SET workload_group = 'report_wg';
cgroup v1 vs v2 behavior differs. Confirm which is active on BE hosts:
mount | grep cgroup
ls /sys/fs/cgroup/cpu/doris/ # cgroup v1
ls /sys/fs/cgroup/doris/ # cgroup v2
Cause D — Tag routing
-- Check BE tags
SHOW BACKENDS\G -- look at Tag column
-- Check WG tag constraint
SHOW WORKLOAD GROUPS\G -- look at ResourceTag
If a workload group specifies a tag but no BEs carry that tag, queries queue forever. Fix:
ALTER SYSTEM MODIFY BACKEND "host:9050" SET ("tag.tag.location" = "high_mem");
Enabling cgroup on BE
# be.conf
doris_cgroup_cpu_path = /sys/fs/cgroup/cpu/doris
enable_workload_group = true
Without cgroup configured, cpu_share is a cooperative hint, not a hard guarantee.
Source
be/src/common/config.cpp—enable_workload_group, cgroup pathsbe/src/pipeline/task_scheduler.cpp— pipeline schedulingfe/.../workloadgroup/WorkloadGroupMgr.java— WG lifecyclefe/.../resource/Tag.java— resource tagsbe/src/util/cgroup_util.cpp— cgroup v1/v2 adapter
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