Qdrant Monitoring Debugging
QdrantOfficialPublished by Qdrant
- Skill
- Review and audit
- Cloud and DevOps
- Apache-2.0
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured approach to diagnosing and resolving common production issues in Qdrant, such as high latency, memory pressure, and stalled optimizations. It focuses on leveraging Qdrant's native observability tools, including the metrics endpoint, slow request logs, and telemetry data, to identify bottlenecks. The guide emphasizes distinguishing between normal OS behavior, such as page cache usage, and actual resource contention, while providing actionable steps to investigate segment management, payload indexing, and optimizer status.
What it does
- Provides procedures to check optimizer status and identify stuck or slow optimization tasks.
- Explains how to differentiate between normal OS page cache usage and actual memory leaks.
- Guides users through analyzing slow query logs to identify performance bottlenecks.
- Details how to use telemetry and collection info to monitor per-collection resource consumption.
- Offers diagnostic steps for investigating latency spikes and search performance degradation.
- Outlines common pitfalls to avoid when debugging Qdrant clusters.
When to use it
- When users report that search queries are slow or experiencing latency spikes.
- When the Qdrant optimizer appears stuck or is taking an unexpectedly long time to complete.
- When monitoring tools indicate high memory usage or the node crashes with an OOM error.
- When performance degrades significantly without any recent configuration changes.
- After bulk data uploads to verify if unmerged segments are impacting search performance.
Advantages
- Reduces mean time to resolution by focusing on the most common root causes like optimizer contention.
- Prevents unnecessary configuration changes by clarifying expected system behaviors.
- Provides clear metrics-based evidence for troubleshooting rather than relying on guesswork.
- Helps distinguish between transient load issues and persistent configuration or resource problems.
Usage examples
- “My Qdrant node is crashing with OOM, how do I check if it is a memory leak?”
- The agent will guide you to check resident memory metrics versus OS page cache and use the telemetry endpoint to verify if memory usage aligns with expected data structures.
- “Search queries are suddenly very slow, what should I check first?”
- The agent will direct you to check the optimizer status for active merges and review the slow request logs to identify specific query bottlenecks.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/qdrant/qdrant-monitoring-debugging/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip qdrant-monitoring-debugging.zip -d .agents/skills
Documentation by Qdrant
How to Debug Qdrant with Metrics
First check optimizer status. Most production issues trace back to active optimizations competing for resources. If optimizer is clean, check memory, then request metrics.
Optimizer Stuck or Too Slow
Use when: optimizer running for hours, not finishing, or showing errors.
Use
/collections/{collection_name}/optimizationsendpoint (v1.17+) to check status Optimization monitoringQuery with optional detail flags:
?with=queued,completed,idle_segmentsReturns: queued optimizations count, active optimizer type, involved segments, progress tracking
Web UI has an Optimizations tab with timeline view and per-task duration metrics Web UI
If
optimizer_statusshows an error in collection info, check logs for disk full or corrupted segmentsLarge merges and HNSW rebuilds legitimately take hours on big datasets. Check progress before assuming it's stuck.
Memory Seems Too High
Use when: memory exceeds expectations, node crashes with OOM, or memory keeps growing.
Process memory metrics available via
/metrics(RSS, allocated bytes, page faults)Qdrant uses two types of RAM: resident memory (data structures, quantized vectors) and OS page cache (cached disk reads). Page cache filling available RAM is normal. Memory article
If resident memory (RSSAnon) exceeds 80% of total RAM, investigate
Check
/telemetryfor per-collection breakdown of point counts and vector configurations, and monitor per-collection memory breakdown Memory usageEstimate expected memory per component (vectors, HNSW index, ID tracker, payload indexes) for the structures kept in RAM, plus about 20% headroom, and compare it with actual usage Capacity planning
Common causes of unexpected growth: quantized vectors pinned in RAM (
memory: pinnedon Qdrant 1.19 or newer,always_ram: trueon 1.18 or older), too many payload indexes, largemax_segment_sizeduring optimization
Queries Are Slow
Use when: queries slower than expected and you need to identify the cause.
Slow request log (v1.16+, always on): surfaces individual slow queries with timing breakdown. It's per node and resets on restart, so query every node in a cluster by using
GET /profiler/slow_requestsSlow request logTrack
rest_responses_avg_duration_secondsandrest_responses_max_duration_secondsper endpointUse histogram metric
rest_responses_duration_seconds(v1.8+) for percentile analysis in GrafanaEquivalent gRPC metrics with
grpc_responses_prefixCheck optimizer status first. Active optimizations compete for CPU and I/O, degrading search latency.
Check segment count via collection info. Too many unmerged segments after bulk upload causes slower search.
Compare filtered vs unfiltered query times. Large gap means missing payload index. Payload index
What NOT to Do
Ignore optimizer status when debugging slow queries (most common root cause)
Assume memory leak when page cache fills RAM (normal OS behavior)
Make config changes while optimizer is running (causes cascading re-optimizations)
Blame Qdrant before checking if bulk upload just finished (unmerged segments)
Files
- ATTRIBUTION.mdAdded by AutoGineer866 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md4.0 KiB
SKILL.md
How to Debug Qdrant with Metrics
First check optimizer status. Most production issues trace back to active optimizations competing for resources. If optimizer is clean, check memory, then request metrics.
Optimizer Stuck or Too Slow
Use when: optimizer running for hours, not finishing, or showing errors.
Use
/collections/{collection_name}/optimizationsendpoint (v1.17+) to check status Optimization monitoringQuery with optional detail flags:
?with=queued,completed,idle_segmentsReturns: queued optimizations count, active optimizer type, involved segments, progress tracking
Web UI has an Optimizations tab with timeline view and per-task duration metrics Web UI
If
optimizer_statusshows an error in collection info, check logs for disk full or corrupted segmentsLarge merges and HNSW rebuilds legitimately take hours on big datasets. Check progress before assuming it's stuck.
Memory Seems Too High
Use when: memory exceeds expectations, node crashes with OOM, or memory keeps growing.
Process memory metrics available via
/metrics(RSS, allocated bytes, page faults)Qdrant uses two types of RAM: resident memory (data structures, quantized vectors) and OS page cache (cached disk reads). Page cache filling available RAM is normal. Memory article
If resident memory (RSSAnon) exceeds 80% of total RAM, investigate
Check
/telemetryfor per-collection breakdown of point counts and vector configurations, and monitor per-collection memory breakdown Memory usageEstimate expected memory per component (vectors, HNSW index, ID tracker, payload indexes) for the structures kept in RAM, plus about 20% headroom, and compare it with actual usage Capacity planning
Common causes of unexpected growth: quantized vectors pinned in RAM (
memory: pinnedon Qdrant 1.19 or newer,always_ram: trueon 1.18 or older), too many payload indexes, largemax_segment_sizeduring optimization
Queries Are Slow
Use when: queries slower than expected and you need to identify the cause.
Slow request log (v1.16+, always on): surfaces individual slow queries with timing breakdown. It's per node and resets on restart, so query every node in a cluster by using
GET /profiler/slow_requestsSlow request logTrack
rest_responses_avg_duration_secondsandrest_responses_max_duration_secondsper endpointUse histogram metric
rest_responses_duration_seconds(v1.8+) for percentile analysis in GrafanaEquivalent gRPC metrics with
grpc_responses_prefixCheck optimizer status first. Active optimizations compete for CPU and I/O, degrading search latency.
Check segment count via collection info. Too many unmerged segments after bulk upload causes slower search.
Compare filtered vs unfiltered query times. Large gap means missing payload index. Payload index
What NOT to Do
Ignore optimizer status when debugging slow queries (most common root cause)
Assume memory leak when page cache fills RAM (normal OS behavior)
Make config changes while optimizer is running (causes cascading re-optimizations)
Blame Qdrant before checking if bulk upload just finished (unmerged segments)
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Node.js
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Qdrant
- Publisher
- Qdrant (Official)
- Source
- qdrant/skills · skills/qdrant-monitoring/debugging · commit 9f55f6a
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Qdrant.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download qdrant-monitoring-debugging.zip