* [1.19] Document language-neutral BM25 text processing (#2445)
* Break Inference page into several pages
* Edits
* Document short query optimization in Cloud Inference
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* [1.19] Document language-neutral BM25 text processing
Replaces the deprecated `language: "none"` workaround with the new explicit
API: `stemmer: {"type": "none"}` to disable stemming and `stopwords: {}`
(empty StopwordsSet) to disable stopword removal.
Updates the language-neutral snippet for all seven client languages and
refreshes the Stemming and Stopwords + Language-neutral sections in
text-search.md with a deprecation callout for the old approach.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Document that stemming and stopword removal are disabled by default for payload indexes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Edits
* The multilingual tokenizer doesn't do lemmatization
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Document `max_disk_usage_percent` for Strict Mode (#2504)
* Document max_disc_usage_percent.
* Generate MD version for the snippets.
* Rephrase sentence.
* [1.19] Documentation for the Turbo4 datatype (#2517)
* Add 'turbo4' section to Vectors docs
* Edit existing datatypes sections
* Update outdated 'Vector Datatypes' section on the Collections page
* Edit
* Documentation for the slice filtering condition (#2529)
* [1.19] Documentation for per-query IDF statistics (#2526)
* Documentation for per-query IDF statistics
* Clarify that IDF is calculated per shard
* Review feedback
* Document `X-Qdrant-Route-Affinity` header for deterministic read routing (#2541)
* Document X-Qdrant-Route-Affinity header for deterministic read routing.
* Address feedback.
* Address feedback.
* Revert "Document `max_disk_usage_percent` for Strict Mode (#2504)" (#2582)
This reverts commit 460ee971ff.
* [1.19] Documentation for resource quotas (#2586)
Document the global quota API from qdrant/qdrant#10035, which replaces the
per-collection strict mode knobs for memory and disk with a single cluster-wide
quota.
New page, ops-configuration/quotas.md (weight 7, between Configuration and
Administration):
- Configuring quotas via storage.quotas, QDRANT__STORAGE__QUOTAS__* env vars,
and PUT /quotas, with the parameter reference
- Configuration precedence: the API wins once used anywhere in the cluster, and
a joining peer receives the config through consensus instead of reading its
own file
- What happens when a limit is reached: the full node's replica is excluded and
marked dead, the write still succeeds at write_consistency_factor
acknowledgements, and clients see HTTP 507 only when no replica can accept it
- Which operations stay allowed, the release margin, GET /quotas for finding the
full node, and the quota_exceeded metric plus the /telemetry quota field
Supporting changes:
- configuration.md: add the storage.quotas block
- monitoring.md: add quota_exceeded to Application Metrics, and note the
/telemetry quota field
- security.md: add get quotas and set quotas to the JWT access table
- common-errors.md: new Insufficient storage (HTTP 507) entry
- faq/qdrant-fundamentals.md: entry on writes rejected with HTTP 507
- administration.md: mark max_resident_memory_percent deprecated as of 1.19.0
- ops-configuration/_index.md: add the new page
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Test code snippets against 1.19
* Document prefix match filtering condition (#2512)
* Document prefix match filtering condition.
* Add generated files.
* Address feedback.
* Address feedback.
* [1.19] Remove links to docs for removed APIs (#2596)
* Remove links to docs for removed APIs
* Add links to new end endpoints
* Use title case for all headers
* [1.19] Add new 'Memory Tiers' page under 'Configuration' (#2510)
* Add new 'Memory Tiers' page under 'Configuration'
* Change doc structure
* Edits
* Review feedback
* [1.19] Memory tiers: existing page updates (#2535)
* Link Vector Storage section to Memory Tiers
* Update collections.md and hnsw-and-quantization snippet for Memory Tiers
* Update indexing.md for Memory Tiers, add sparse-vector-index default snippet
* Update quantization.md and its snippets for Memory
Tiers
* Update storage.md and its snippets for Memory Tiers
* Update configuration.md for Memory Tiers
* Update administration.md Low Memory Mode section for Memory Tiers
* Update optimize.md and its snippets for Memory Tiers
* Cross-link memory-usage.md fields to Memory Tiers
* Update read-write-contention.md RAM scaling note for Memory Tiers
* Update capacity-planning.md for Memory Tiers
* Update production-checklist.md storage section for Memory Tiers
* Update what-is-qdrant.md Storage bullet for Memory Tiers
* Update cloud-getting-started.md cost-optimization tip for Memory Tiers
* Update create-cluster.md disk sizing note for Memory Tiers
* Update bulk-upload.md Upload Directly to Disk section for Memory Tiers
* Note deprecated legacy params in large-scale-search.md benchmark config
* Fix missed Update Vector Parameters section and sparse-index description for Memory Tiers
* Release blog for v1.19 (#2553)
* Initial commit
* Review feedback
* Add 'Resharding Progress' section to Web UI Enhacements
* Add preview images
* Add missing section image
* Added link to Qdrant Advisor agent skill
* Add links; small edits
* Remove max_disk_usage_percent entry
* Add Resource Quotas entry
* Update release date
* Fix create-payload-index/keyword-with-prefix/rust.rs issue
* Fix create-collection/with-memory-tiers/csharp.cs issue
* Don't publish the blog post yet
* Remove blog post from this PR
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: István Zoltán Szabó <istvan.zoltan.szabo@qdrant.com>
6.6 KiB
title, short_description, description, partition, weight, aliases
| title | short_description | description | partition | weight | aliases | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Troubleshooting | Diagnose and resolve common Qdrant errors, from open-file limits and quota rejections to incompatible file systems and corrupted collection metadata. | Troubleshoot common Qdrant runtime errors: open-file limits, HTTP 507 quota rejections, POSIX file system requirements, and recovery from corrupted collection metadata. | deploy | 150 |
|
Solving common errors
Too many files open (OS error 24)
Each collection segment needs some files to be open. At some point you may encounter the following errors in your server log:
Error: Too many files open (OS error 24)
In such a case you may need to increase the limit of the open files. It might be done, for example, while you launch the Docker container:
docker run --ulimit nofile=10000:10000 qdrant/qdrant:latest
The command above will set both soft and hard limits to 10000.
If you are not using Docker, the following command will change the limit for the current user session:
ulimit -n 10000
Please note, the command should be executed before you run Qdrant server.
Insufficient storage (HTTP 507)
Available as of v1.19.0
When nodes have been configured with a resource quotas no nodes may be availabe with replicas that accept writes. In that case, clients see an HTTP 507 Insufficient Storage, or gRPC ResourceExhausted error:
Disk usage is at 95% of total capacity, exceeding the configured limit of 90%.
Help: Reduce disk usage (e.g. delete points or drop collections), or raise
`max_disk_usage_percent` in the global quota config.
See also: When a Quota Is Exceeded
To resolve it, either free the resource or raise the limit:
- Delete points, or drop collections you no longer need. Point deletes stay allowed under a quota for exactly this reason. Deleting individual vectors or payload keys is rejected.
- Add capacity. See Capacity Planning.
- Raise the limit with
PUT /quotas, if the quota is set lower than the node can actually handle.
Writes don't resume the instant usage drops. A tripped limit clears only once usage has fallen under the release margin, which defaults to 5 percentage points under the limit.
Incompatible file system
Qdrant have a set of requirements for persistent file storage. The most important requirement is that file system must be POSIX-compatible.
Starting from v1.15.0 Qdrant performs runtime check of file system compatibility on start. If it detects an unknown file system, you can see a warning like this:
WARN qdrant: There is a potential issue with
the filesystem for storage path ./storage. Details:
HFS/HFS+ filesystem support is untested
If runtime check fails, you might see an error message:
ERROR qdrant: Filesystem check failed for storage path ./storage.
Details: FUSE filesystems may cause data corruption due to caching issues
If an error like this is reported, it is NOT safe to continue working with current configuration and you're at risk of losing your data.
Most common errors you might see, if you continue using Qdrant with incompatible file system:
ERROR
Panic occurred in file /qdrant/lib/gridstore/src/gridstore.rs at line 53:
called `Result::unwrap()` on an `Err` value: OutputTooSmall { expected: 4, actual: 0 }
or
ERROR
Service internal error: task XXX panicked with message
"called `Result::unwrap()` on an `Err` value: OutputTooSmall { expected: 4, actual: 0 }"
It might be also possible that vector data will be lost (set to all zeros) after service restart.
How to avoid Incompatible file system?
Most common used configuration of incompatible file system is usage of WSL-baced Docker containers in Windows. When you mount Windows folder into Qdrant docker container, the Windows hyper visor creates a shared mount, which is not fully POSIX-compatible.
Prefer to use docker volumes instead of bind mount:
# Create named volume
docker volume create qdrant-storage
# Use named volume with qdrant container
docker run --rm -it \
-p 6333:6333 -p 6334:6334 \
-v qdrant-storage:/qdrant/storage qdrant/qdrant:v1.15.3
The above keeps the volume inside the Linux container, preventing issues with a mount shared with Windows.
Can't open Collections meta Wal
When starting a Qdrant instance as part of a distributed deployment, you may come across an error message similar to this:
Can't open Collections meta Wal: Os { code: 11, kind: WouldBlock, message: "Resource temporarily unavailable" }
It means that Qdrant cannot start because a collection cannot be loaded. Its associated WAL files are currently unavailable, likely because the same files are already being used by another Qdrant instance.
Each node must have their own separate storage directory, volume or mount.
The formed cluster will take care of sharing all data with each node, putting it all in the correct places for you. If using Kubernetes, each node must have their own volume. If using Docker, each node must have their own storage mount or volume. If using Qdrant directly, each node must have their own storage directory.
Using python gRPC client with multiprocessing
When using the Python gRPC client with multiprocessing, you may encounter an error like this:
<_InactiveRpcError of RPC that terminated with:
status = StatusCode.UNAVAILABLE
details = "sendmsg: Socket operation on non-socket (88)"
debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"sendmsg: Socket operation on non-socket (88)", grpc_status:14, created_time:"....."}"
This error happens, because multiprocessing creates copies of gRPC channels, which share the same socket. When the parent process closes the channel, it closes the socket, and the child processes try to use a closed socket.
To prevent this error, you can use the forkserver or spawn start methods for multiprocessing.
import multiprocessing
multiprocessing.set_start_method("forkserver") # or "spawn"
Alternatively, you can switch to REST API, async client, or use built-in parallelization in the Python client - functions like qdrant.upload_points(...)