Meta leader flapping means the JetStream meta cluster leader has changed more than the allowed number of times within the recent collection window. A stable meta leader should hold leadership for days or weeks. Frequent leader elections signal underlying instability — network issues, resource pressure, or hardware problems — that disrupts the entire JetStream control plane with every election.
The meta leader is the single coordination point for all JetStream API operations. Stream creation, consumer provisioning, placement decisions, and metadata queries all route through the meta leader. During a leader election, these operations stall. The election itself is fast — typically under a second — but the disruption extends beyond the election window.
Every leader transition has a cost. Inflight API requests fail or time out. Clients that submitted stream or consumer creation requests during the election must retry. Applications that depend on synchronous JetStream operations pause. In a healthy cluster, this happens rarely enough to be invisible. When the leader flaps repeatedly — multiple elections per hour — the cumulative disruption becomes a sustained degradation. Applications experience intermittent JetStream errors, API latency becomes unpredictable, and operational tooling that queries JetStream metadata returns stale or missing data.
The compounding effect is the real danger. Each leader election disrupts the current leader’s Raft heartbeats to stream and consumer Raft groups, not just the meta group. If the meta leader was also a leader for multiple stream Raft groups, those groups trigger their own elections. The cascade turns a single meta leadership change into a cluster-wide storm of elections, each adding CPU, disk, and network overhead. If the underlying cause isn’t resolved, the cluster can enter a sustained degraded state where elections trigger more elections.
Network instability between cluster peers. Raft heartbeats are sent every 1 second and the election timeout is 4–9 seconds — any disruption longer than 4 seconds triggers a new election. If network packets between the leader and followers are delayed or dropped, followers time out and start a new election. This is the most common cause of flapping — even brief packet loss can trigger an election.
CPU saturation delaying heartbeat processing. The meta leader handles JetStream API operations, Raft log replication, and heartbeat maintenance concurrently. If the leader’s CPU is saturated — from processing too many API requests, running too many Raft groups, or competing with other processes — heartbeat sends may be delayed past the follower timeout window (4–9 seconds).
Disk I/O stalls blocking Raft WAL writes. Raft requires durable log writes for every committed operation. If disk I/O is slow (spinning disks, saturated NVMe, shared storage contention), the leader takes longer to process operations. Disk I/O stalls that block Raft WAL writes delay heartbeat processing and can cause followers to start elections. Disk I/O latency is often intermittent, causing sporadic rather than continuous flapping.
Clock skew between servers. While Raft doesn’t depend directly on clock synchronization, server-side timers for heartbeat intervals and election timeouts use the local clock. Significant clock skew can cause servers to perceive timeout durations inconsistently, leading to premature elections on some nodes.
Server repeatedly entering lame duck mode. A server that enters and exits lame duck mode (planned shutdown mode) triggers leadership step-downs. If orchestration is cycling the server — for example, Kubernetes restarting a pod repeatedly due to failing health checks — each cycle triggers a meta leader election.
Resource contention from large Raft state. Clusters with thousands of streams and consumers have large meta group state. Raft snapshots of this state require significant disk I/O and memory. If a snapshot operation coincides with a burst of API requests, the leader may miss heartbeat deadlines.
Check who currently holds meta leadership and look for recent changes:
nats server report jetstreamThe meta group section shows the current leader. Run this command a few times over several minutes. If the leader name changes between runs, the meta leader is actively flapping.
Subscribe to JetStream advisory events to see elections in real time:
nats event --js-advisoryLeader election advisories include the old leader, new leader, and the Raft group affected. Filter for meta group elections to see the frequency and pattern.
Identify which servers have been holding (and losing) leadership, then check their resource usage:
# Check CPU and memory across clusternats server listLook for the server that was most recently the meta leader. If it’s showing high CPU utilization, high memory pressure, or slow response times, resource constraints may be causing heartbeat delays.
Use nats server report jetstream to see current meta state, including the current leader and follower lag.
nats server listFor route connections (server-to-server), RTT should be low — under 10ms within a datacenter, under 50ms across regions. Elevated RTT on route connections between meta group members increases the risk of heartbeat timeouts.
This requires access to the server host. Check for disk latency on the storage volume used by the NATS data directory:
# On the server hostiostat -x 1 5Look at await (average I/O wait time) and %util (utilization). Sustained high values on the NATS data volume indicate disk is the bottleneck.
Step down to a healthier node. If the current leader is on a resource-constrained server, force an election to move leadership to a server with more headroom:
nats server cluster step-downThis triggers a new election. Raft will select the follower with the most up-to-date log, which is typically the healthiest peer. This doesn’t fix the root cause but can stop the flapping cycle if one specific server is the problem.
Reduce load on the meta leader. If API request volume is contributing to leader instability, temporarily reduce JetStream API traffic. Pause non-critical monitoring that polls StreamInfo or ConsumerInfo. Defer bulk operations (stream creation, consumer provisioning) until the leader stabilizes.
Resolve network issues between cluster peers. If RTT between peers is elevated or packet loss is occurring, work with your network team to stabilize the path. Common fixes include:
Upgrade hardware on meta-eligible servers. The meta leader needs low-latency disk I/O, stable CPU availability, and reliable network connectivity. At minimum:
1// Example: server config ensuring JetStream uses fast storage2jetstream {3 store_dir: "/mnt/nvme/nats/jetstream"4 max_mem: 4GB5 max_file: 100GB6}Fix NTP synchronization. Ensure all servers in the cluster use a common NTP source. Clock skew should be under 50ms. On Linux:
timedatectl statuschronyc trackingReduce total Raft group count. Every replicated stream and consumer is a Raft group that the meta leader must coordinate. Consolidate workloads: use fewer, larger streams with subject-based filtering instead of many small streams. Target keeping total Raft groups under 1,000–2,000 per cluster for optimal meta leader performance.
Use dedicated JetStream nodes. In mixed clusters where some nodes handle both core NATS traffic and JetStream, the meta leader competes for resources with high-throughput message routing. Dedicating specific nodes to JetStream (or at least ensuring the meta leader isn’t also a high-traffic message router) reduces resource contention.
Monitor election frequency as a leading indicator. Set up persistent monitoring on meta leader elections. A single election is normal (planned maintenance, rolling upgrades). Two or more in a short window is the signal to investigate before the cluster destabilizes.
In a healthy cluster, the meta leader should hold leadership indefinitely — days, weeks, or longer. Leadership changes should only occur during planned operations: rolling upgrades, server maintenance, or manual step-downs. Any unplanned leader change warrants investigation. Multiple unplanned changes within an hour indicate active instability.
Not directly. Meta leader flapping affects the JetStream control plane (API operations), not the data plane (message publishing and consumption). Messages already stored in streams are safe, and stream leaders continue to serve reads and writes independently of the meta leader. However, if meta flapping cascades into stream leader elections — which can happen if the meta leader was also a stream leader — those stream elections briefly interrupt message delivery.
Flapping (META_003) means the leader keeps changing — elections are happening, and they succeed, but leadership is unstable. Quorum lost (META_006) means enough peers are offline that no election can succeed — there’s no leader at all. Flapping is a warning that something is wrong; quorum loss is a critical failure where JetStream API operations are completely stalled.
Not directly — Raft elects the leader based on which peer has the most up-to-date log and wins the election. However, you can influence leadership by ensuring the preferred server has the best hardware (faster disk, more CPU), which makes it more likely to process operations quickly and maintain leadership. You can also step down the current leader with nats server cluster step-down to trigger a new election if leadership lands on an undesirable node.
Increasing the election timeout makes followers wait longer before starting a new election, which can reduce flapping caused by brief network hiccups. However, it also increases the time the cluster operates without a leader during a genuine failure. The default timeout is tuned for a balance between stability and recovery speed. Adjust it only if you’ve confirmed that brief, transient network delays are causing premature elections.
With 100+ always-on audit Checks from the NATS experts, Insights helps you find and fix problems before they become costly incidents.
No alert rules to write. No dashboards to maintain.
News and content from across the community