# ElasticsearchException: [index][0] recovery throttled due to max_bytes_per_sec [40mb]

- **ID:** `elasticsearch/max-bytes-per-sec-throttle`
- **Domain:** elasticsearch
- **Category:** resource_error
- **Verification:** ai_generated
- **Fix Rate:** 78%

## Root Cause

Shard recovery is throttled because the node's max_bytes_per_sec setting is too low for the current recovery load.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| elasticsearch 7.17.0 | active | — | — |
| elasticsearch 8.10.0 | active | — | — |
| elasticsearch 8.6.2 | active | — | — |

## Workarounds

1. **Increase max_bytes_per_sec temporarily using dynamic cluster settings: PUT _cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "100mb" } }** (85% success)
   ```
   Increase max_bytes_per_sec temporarily using dynamic cluster settings: PUT _cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "100mb" } }
   ```
2. **Reduce concurrent recoveries by setting indices.recovery.concurrent_streams to 2 in elasticsearch.yml to throttle recovery parallelism.** (75% success)
   ```
   Reduce concurrent recoveries by setting indices.recovery.concurrent_streams to 2 in elasticsearch.yml to throttle recovery parallelism.
   ```
3. **Allocate more dedicated hot nodes to spread recovery load, then rebalance replicas.** (90% success)
   ```
   Allocate more dedicated hot nodes to spread recovery load, then rebalance replicas.
   ```

## Dead Ends

- **** — This can saturate network bandwidth and cause other node failures, especially in clusters with many concurrent recoveries. (45% fail)
- **** — Restarting only resets the recovery process temporarily; throttling reapplies once recovery resumes. (70% fail)
- **** — Setting to 0 disables throttling but can overwhelm the node's I/O, leading to OOM or disk saturation. (65% fail)
