# Improve your cluster

:::callout{intent="tip" title="Just started Weaviate?"}
This page is linked from the banner Weaviate logs once a cluster is up. If you just ran it for the first time, the checklist is for later: start with the [quickstart](../quickstart/index.md) and [connect a client](../connect-to-weaviate/index.md), and come back once you have data you would mind losing.
:::

Most errors in the [error messages](errors.md) reference come from clusters that were short on headroom, unmonitored, or behind on versions. This page lists what to change so the next one does not happen. Do it once at setup and again when the workload changes shape: a new collection, many more tenants, a much larger import.

::::card-grid
:::card{title="Give it headroom" href="#give-the-cluster-headroom" icon="gauge"}
Memory, disk, memory mappings, and vector memory are all knowable in advance.
:::

:::card{title="Survive losing a node" href="#survive-the-loss-of-a-node" icon="copy"}
More than one copy of anything you cannot rebuild quickly.
:::

:::card{title="Find out first" href="#find-out-before-your-users-do" icon="bell"}
Every limit announces itself in the logs and metrics before it is an outage.
:::

:::card{title="Be able to go back" href="#be-able-to-go-back" icon="history"}
Replication copies mistakes perfectly. Backups are how you undo them.
:::

:::card{title="Stay current" href="#stay-current" icon="rotate-cw"}
Old versions carry every bug fixed since, and the upgrade comes anyway.
:::
::::

## Give the cluster headroom

Weaviate fails safely when it runs out of a resource: shards go read-only or refuse to load rather than corrupting data. That is the behavior you want, but it is still an outage, and every one of these limits is knowable in advance.

::::card-grid
:::card{title="Size memory for the working set, not the average" href="/guides/concepts-resources" cta="Resource planning"}
Set GOMEMLIMIT, or LIMIT\_RESOURCES and let Weaviate derive it. Without one, the runtime assumes it may use the whole machine and gets killed by the container limit instead of collecting garbage harder.
:::

:::card{title="Treat 90% disk as the ceiling, not the target" href="/guides/storage-and-backups-persistence#disk-pressure-warnings-and-limits" cta="Disk thresholds"}
Weaviate warns above 80% and marks shards read-only above 90%, both tunable. Compaction and backups need free space too.
:::

:::card{title="Raise the memory-mapping limit" href="/guides/errors-errors-cluster-resources#not-enough-memory-mappings" cta="The fix"}
Every shard costs kernel memory mappings, and the limit is a host setting, not a container one. Thousands of active tenants on one node pass a distribution default.
:::

:::card{title="Compress vectors" href="/guides/how-to-configure-weaviate-compression" cta="Compression"}
Vector indexes are the largest consumer and quantization is the biggest single lever: a small amount of recall for a large reduction in memory, and it can be enabled on a collection you already have.
:::

:::card{title="Keep inactive tenants out of memory" href="/guides/how-to-manage-collections-tenant-states" cta="Tenant states"}
Tenants you are not serving should not be resident. Deactivating or offloading them returns memory, mappings, and file handles.
:::
::::

## Survive the loss of a node

A single-node cluster has no bad days, only outages. If Weaviate holds data you cannot rebuild quickly from somewhere else, it needs more than one copy.

::::card-grid
:::card{title="Set a replication factor above one" href="/guides/replication-and-scaling-replication" cta="Replication"}
On collections that matter, and when you create them: raising it later copies data across the network at a moment you probably did not choose.
:::

:::card{title="Use an odd number of nodes"}
So the cluster can still form a majority when one is lost.
:::

:::card{title="Choose consistency levels deliberately" href="/guides/replication-architecture-consistency" cta="Consistency"}
Weaviate lets you pick per request, so the write path and the read path can make different trade-offs.
:::

:::card{title="Turn on async replication" href="/guides/replication-and-scaling-async-rep" cta="Async replication"}
Replicas that fall behind, or miss writes while restarting, repair themselves in the background instead of serving stale results until someone notices.
:::
::::

## Find out before your users do

Every resource limit above announces itself in the logs and in the metrics well before it becomes an outage. That warning is only worth having if something is reading it.

::::card-grid
:::card{title="Scrape the metrics endpoint" href="/guides/monitoring-and-logging-monitoring" cta="Monitoring"}
Weaviate exposes Prometheus metrics, and there is a ready-made Grafana setup to start from.
:::

:::card{title="Alert on the leading indicators"}
Alert on heap usage against the limit, disk usage against the read-only threshold, and shards reporting read-only. Request failures come last; by then users have noticed.
:::

:::card{title="Collect the logs somewhere searchable" href="/guides/monitoring-and-logging-logging" cta="Logging"}
Weaviate logs JSON by default, so the fields are queryable without parsing message text. Alert on the action field rather than on wording, which changes between releases.
:::

:::card{title="Watch the cluster node data for shards that are not ready" href="/guides/monitoring-and-logging-status#cluster-node-data" cta="Cluster status"}
It is the fastest way to tell a slow cluster from a partly broken one.
:::
::::

## Be able to go back

Replication protects you from losing a node. It does not protect you from a bad import, a mistaken deletion, or a schema change you want to undo, because all three replicate perfectly.

::::card-grid
:::card{title="Configure a backup backend and a schedule" href="/guides/storage-and-backups-backups" cta="Backups"}
To storage that is not the cluster's own disk.
:::

:::card{title="Restore one"}
An untested backup is a hypothesis. Restore into a scratch cluster and query it, at least once, before you need it to work.
:::

:::card{title="Check what a backup covers"}
Against what you would need to rebuild, including collection configuration and inactive tenants.
:::

:::card{title="Keep persistence on a volume that outlives the container" href="/guides/storage-and-backups-persistence" cta="Persistence"}
A container restart should not be a data-loss event.
:::
::::

## Stay current

Running a version that is a year old means carrying every bug that has since been fixed, and paying for the upgrade later anyway, in one larger jump.

::::card-grid
:::card{title="Read the release notes before upgrading" href="/guides/releases-index" cta="Release notes"}
And the migration guide when there is one.
:::

:::card{title="Check the known issues page when something is strange" href="/guides/releases-known-issues" cta="Known issues"}
A surprising number of one-off mysteries are documented there with a version number attached.
:::

:::card{title="Keep clients within the server's supported range" href="/guides/releases-index#version-support-policy" cta="Support policy"}
Client and server versions move independently, and a large gap between them is a common source of confusing errors.
:::
::::

## More ways to run and extend Weaviate

Everything above applies to a cluster you run yourself. If running it is not the part you want to own, or you want more than the database:

::::card-grid
:::card{title="Weaviate Cloud" href="/guides/cloud-quickstart" icon="cloud"}
Runs the cluster for you. Start with a Free cluster and point your existing client at it with the same connection code.
:::

:::card{title="Managed and enterprise" href="https://weaviate.io/deployment" icon="building"}
Weaviate on DigitalOcean, or Enterprise support for clusters you keep in your own environment. Pricing is public.
:::

:::card{title="Weaviate Embeddings" href="/guides/cloud-weaviate-embeddings-overview" icon="vector-square"}
Generates vectors for your collections inside Weaviate Cloud, so there is no embedding model to run, host, or pay for separately.
:::

:::card{title="Query Agent" href="/guides/agents-overview" icon="bot"}
Answers questions over your collections in natural language, choosing the searches, filters, and aggregations itself.
:::

:::card{title="Engram" href="/guides/engram-overview" icon="brain"}
Long-term memory for AI agents, built on Weaviate: agents remember across sessions without you designing the storage.
:::
::::

## Further resources

::::card-grid
:::card{title="Production readiness checklist" href="/guides/kubernetes-production-readiness" icon="list-checks"}
:::

:::card{title="Getting to production on Kubernetes" href="/guides/kubernetes-get-to-production" icon="dharmachakra"}
:::

:::card{title="Managing resources starter guide" href="/guides/starter-guides-managing-resources" icon="gauge"}
:::

:::card{title="Error messages" href="/guides/errors-errors" icon="triangle-alert"}
:::
::::

## Questions and feedback

Have a question or feedback? Here's how to reach us.

::::card-grid
:::card{title="Community Forum" href="https://forum.weaviate.io/c/support" icon="messages-square"}
Ask questions and connect with other developers on our **Community forum**.
:::

:::card{title="Support" href="/guides/support-overview" icon="life-buoy"}
Weaviate Cloud user or customer? Find the right channel on the **Support page**.
:::
::::

## Related pages

- [Agents](./agents-index.md)
- [AI-assisted Weaviate code generation](./ai-assisted-vibe-coding-index.md)
- [APIs](./apis-index.md)
- [Authorization and authentication](./authorization-and-authentication-index.md)
- [Benchmarks](./benchmarks-index.md)
- [Best practices](./best-practices-index.md)
- [Client libraries](./clients-index.md)
- [Client Libraries / SDKs](./client-libraries-index.md)
- [Cloud](./cloud-index.md)
- [Cloud account management](./cloud-account-management-index.md)

# Agent Instructions

This portal answers questions programmatically. To receive a synthesized,
source-cited answer instead of crawling page by page, append the `?ask=`
query parameter to any page URL on this site:

    /guides/quickstart?ask=how+do+I+authenticate

Optional parameters:

- `&goal=<what-you-are-trying-to-do>` steers the answer toward your
  objective (e.g. `&goal=write+a+python+client`).
- `&version=<label>` scopes the answer to a mounted version when the
  portal publishes more than one.

The response is `text/markdown`: the answer followed by a `# Sources` list
of the portal pages it was grounded in. Status codes are the contract:

- `200` — the answer; `402` — the portal owner’s plan or answer credits are
  exhausted (surface this to your operator; do NOT retry); `429` — you are
  rate-limited; back off for the `Retry-After` seconds; `503` — the answer
  lane is temporarily unavailable; fall back to crawling the `.md` pages.

For the full corpus map read `llms.txt` at the site root; for the tool
surface (search + page fetch as MCP tools) see `/mcp`.
