Scenario 03.1.3 · Slow follower
Kafka slow follower: replica.lag.time.max.ms and the ISR
A throttled follower lags past the threshold, drops out of ISR, then rejoins when un-throttled.
Run this scenario in the playgroundCluster ready - ISR=3. t+0.000s
Open at this step: step 1, Cluster ready - ISR=3broker-3 throttled (slow follower). t+2.050s
A slow replica stops advancing its log-end offset.
Open at this step: step 2, broker-3 throttled (slow follower)broker-3 falling behind - still in ISR. t+6.100s
Lag is below the eviction threshold so far.
Open at this step: step 3, broker-3 falling behind - still in ISRbroker-3 lags past the threshold - evicted from ISR. t+8.100s
ISR shrinks from lag, not from a crash.
Open at this step: step 4, broker-3 lags past the threshold - evicted from ISRUn-throttled - broker-3 catches up and rejoins ISR. t+11.100s
Open at this step: step 5, Un-throttled - broker-3 catches up and rejoins ISRWhat you start with
A follower stays in the ISR only while it keeps catching up to the leader's log end within replica.lag.time.max.ms. Here broker-3 is throttled so it falls behind the leader, then un-throttled - watch it lag past the threshold, drop out of the ISR, and rejoin once it catches up.
Step by step
- Cluster ready - ISR=3 t+0.000s Open at this step: step 1, Cluster ready - ISR=3
- broker-3 throttled (slow follower) t+2.050s A slow replica stops advancing its log-end offset. Open at this step: step 2, broker-3 throttled (slow follower)
- broker-3 falling behind - still in ISR t+6.100s Lag is below the eviction threshold so far. Open at this step: step 3, broker-3 falling behind - still in ISR
- broker-3 lags past the threshold - evicted from ISR t+8.100s ISR shrinks from lag, not from a crash. Open at this step: step 4, broker-3 lags past the threshold - evicted from ISR
- Un-throttled - broker-3 catches up and rejoins ISR t+11.100s Open at this step: step 5, Un-throttled - broker-3 catches up and rejoins ISR
The takeaway
A follower is judged on freshness, not absolute position: lagging past the time threshold evicts it from the ISR, and catching back up readmits it automatically - no operator intervention needed.
Configs in this scenario
-
replica.How long a follower may go without fetching, or without catching up to the end of the leader log, before the leader removes it from the ISR (default 30000, 30 seconds).lag. time. max. ms
Embed this scenario
Paste this into a blog post, a course page or your team's docs. The scenario plays inside your page, and the link under it points readers to this walkthrough.
<iframe src="https://monedula.dev/kafka-simulator/embed/?scenario=03.1.3" title="Kafka Simulator: Slow follower" width="100%" height="520" style="border:1px solid #d0d0d0;border-radius:8px" loading="lazy"></iframe>
<p><a href="https://monedula.dev/kafka-simulator/scenarios/slow-follower/">Kafka slow follower: replica.lag.time.max.ms and the ISR</a></p> Further reading
Troubleshooting
More in Replication
- Kafka ISR (in-sync replicas): how replicas leave and rejoin
- min.insync.replicas with acks=all: when Kafka refuses writes
- Kafka high watermark pinned by a slow in-sync replica
- Losing two Kafka brokers with min.insync.replicas=2
- Kafka preferred leader election after a rack failure
- Kafka unclean.leader.election.enable: offline or data loss
- Kafka unclean leader election: permanent loss of acked data
- Kafka log truncation when an old leader returns
- Kafka broker.rack: rack-aware replica placement
- Kafka rack-aware reassignment after adding a rack
- Increase the replication factor of an existing Kafka topic