<!-- llms-explorer concept facts · https://llms-explorer.com/tree/spill-wiredtiger-instance-cache/ · pack 2026-10-30 · ~1700 tokens -->

# Spill WiredTiger instance cache

> Source-anchored research for Spill WiredTiger instance cache. Run status: COMPLETED.

Parent: [WiredTiger cache eviction and dirty ratio](https://llms-explorer.com/tree/wiredtiger-cache-eviction-and-dirty-ratio/) · 5 facets · 14 facts · page: https://llms-explorer.com/tree/spill-wiredtiger-instance-cache/

## How it works

- serverStatus.spillWiredTiger.cache exposes maximum bytes configured, bytes currently in the cache, tracked dirty bytes in the cache, dirty-trigger counts, and application-thread eviction time. Diagnostic inference: calculate this instance's dirty ratio as its tracked dirty bytes divided by its own maximum bytes configured. (low confidence) — [source](https://www.mongodb.com/docs/manual/reference/command/serverStatus.md)
- The inspected v8.2 declarations set spill dirty eviction target to 5 percent, dirty trigger to 80 percent, updates trigger to 80 percent, and minimum/maximum eviction threads to one each. They describe the dirty target as background-thread eviction and the dirty trigger as application-thread eviction. (low confidence) (verified as of 2026-10-30) — [source](https://github.com/mongodb/mongo/blob/v8.2/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.idl)
- For the inspected v8.2 spill engine, both minimum and maximum eviction-thread counts default to one. These startup parameters are distinct from dirty target and trigger settings. (medium confidence) (verified as of 2026-10-30) — [source](https://github.com/mongodb/mongo/blob/v8.2/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.idl)

## Measurements and reference values

- A Komodo issue's April 3, 2026 startup log shows Opening spill WiredTiger with cache_size=498M, eviction_dirty_target=24MB, eviction_dirty_trigger=398MB, eviction_updates_trigger=398MB, one eviction thread, and logging disabled. This is one deployment observation, not a benchmark or evidence that these settings caused its connection-reset symptoms. (low confidence) (verified as of 2026-04-03) — [source](https://github.com/moghtech/komodo/issues/1320)
- The inspected v8.2 defaults set spill dirty eviction target to 5% of spill-cache capacity, dirty trigger to 80%, and updates trigger to 80%. The engine converts these percentages to integer MB before opening WiredTiger. Background eviction threads handle the dirty target; application threads participate at the dirty trigger. These are spill-specific settings. (medium confidence) (verified as of 2026-10-30) — [source](https://github.com/mongodb/mongo/blob/v8.2/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.idl)

## Problems, failure modes and limitations

- WeKan documents a MongoDB 8.2.2 incident where disk exhaustion was followed by repeated startup failure of the temporary spill instance: Failed to clear dbpath of the internal WiredTiger instance preceded Failed to open the spill WiredTiger instance. Its account identifies the affected temporary directory as <dbPath>/_tmp/spilldb; this was a startup/storage incident, not a measured dirty-ratio failure. (low confidence) (verified as of 2026-10-30) — [source](https://github.com/wekan/wekan-gantt-gpl/blob/main/docs/Databases/MongoDB/Storage-Requirements.md)
- Historical MongoDB issue SERVER-74133 describes spill writes inside a user multi-document transaction filling dirty cache with uncommitted, unevictable data and potentially stalling concurrent writes. The issue lists no affected or fixed versions, so it cannot establish that the same behavior remains in the separate spill-instance implementation. (low confidence) — [source](https://jira.mongodb.org/browse/SERVER-74133)
- WeKan reports a MongoDB 8.2 startup loop after disk exhaustion: spill-directory cleanup failed with "Directory not empty", followed by "Failed to open the spill WiredTiger instance" and WT_TRY_SALVAGE. Treat this as a reported spill-storage startup failure, not evidence that an eviction dirty threshold caused the incident. (low confidence) (verified as of 2026-10-30) — [source](https://github.com/wekan/wekan-gantt-gpl/blob/main/docs/Databases/MongoDB/Storage-Requirements.md)

## Comparisons and alternatives

- Percona PMM 3 documents panels for cache capacity, dirty versus clean page eviction, cache activity, and disk I/O. These support contextual diagnosis, but this page does not establish that its standard panels collect the separate spillWiredTiger subtree. Verify metric provenance before interpreting them as spill-cache measurements. (low confidence) (verified as of 2026-10-30) — [source](https://docs.percona.com/percona-monitoring-and-management/3/reference/dashboards/dashboard-mongodb-wiredtiger-details.html)

## Facts and statements

- MongoDB documents an isolated in-memory cache for its spill WiredTiger instance. The v8.2 implementation opens a separate WiredTiger connection and constructs its cache configuration from spill-specific startup options. (medium confidence) — [source](https://www.mongodb.com/docs/manual/reference/command/serverStatus.md)
- In the inspected v8.2 source, spillWiredTigerCacheSizePercentage defaults to 2.5, bounded by spillWiredTigerCacheSizeMinMB=100 and spillWiredTigerCacheSizeMaxMB=1000. The inspected sizing utility clamps systemMemoryMB * pct * 0.01 to those bounds; this is a separate allocation from the main cache. (medium confidence) (verified as of 2026-10-30) — [source](https://github.com/mongodb/mongo/blob/v8.2/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.idl)
- WiredTigerUtil::getSpillCacheSizeMB computes systemMemoryMB multiplied by pct multiplied by 0.01, truncates to int32_t, and clamps the result between minMB and maxMB; it rejects minMB greater than maxMB. (low confidence) (verified as of 2026-10-30) — [source](https://github.com/mongodb/mongo/blob/master/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp)
- The v8.2 spill connection disables logging and spill-table creation also disables table logging. Independently posted Komodo startup logs show a spill connection configured with log=(enabled=false). This configuration concerns temporary spill data. (medium confidence) (verified as of 2026-10-30) — [source](https://github.com/mongodb/mongo/blob/v8.2/src/mongo/db/storage/wiredtiger/spill_wiredtiger_kv_engine.cpp)
- For deployments exposing these metrics, compute spill dirty occupancy as spillWiredTiger.cache["tracked dirty bytes in the cache"] divided by spillWiredTiger.cache["maximum bytes configured"], and cache occupancy with "bytes currently in the cache" over that same denominator. This is a derived monitoring method; it aligns with the spill engine calculating eviction thresholds from its own configured capacity. (medium confidence) — [source](https://www.mongodb.com/docs/manual/reference/command/serverStatus.md)
