Skip to content
🎉 Launch sale:50% off everything over $22 — automatically applied at checkout· ends Aug 2Shop the sale →
DevOps AI ToolKit
Newsletter
All guides
AI for RabbitMQ By James Joyner IV · · 8 min read Last reviewed Jul 2026

RabbitMQ Error: Lazy Queue Mode Deprecated, High Disk I/O After Conversion

Quick answer

Fix RabbitMQ lazy queue mode issues: diagnose deprecated x-queue-mode lazy, classic queue v2 behaviour, and high disk I/O after conversion with rabbitmqctl and diagnostics.

Part of the RabbitMQ Cluster, Queue & Resource Errors hub
  • #rabbitmq
  • #messaging
  • #troubleshooting
  • #errors
Free toolkit

Stuck on this RabbitMQ error? Get the free incident triage checklist

A one-page PDF — the exact steps to isolate, fix, and verify a production error like this one. No spam, unsubscribe anytime.

Exact Error Message

Setting a lazy queue mode on RabbitMQ 3.12+ produces a deprecation warning, because classic queues v2 changed how paging works:

[warning] <0.914.0> Deprecated features used:
[warning] <0.914.0>   * queue_mode (x-queue-mode=lazy has no effect on classic queues v2)
[warning] <0.914.0> Consult https://www.rabbitmq.com/docs/deprecated-features for more details.

Operationally, the symptom that brings people here is sustained disk I/O and high I/O wait after switching queues to lazy mode:

[warning] <0.1550.0> Free disk space is insufficient. Free bytes: 812304384.
[warning] <0.1550.0>   Limit: 1000000000. Publishers will be blocked.

What It Means

Lazy queues (x-queue-mode: lazy) were a classic-queue mode that kept message bodies on disk instead of in memory, trading RAM for disk I/O. Starting with RabbitMQ 3.12, classic queues v2 (CQv2) became the default storage engine, and it pages to disk automatically. As a result the x-queue-mode / queue-mode setting is deprecated and has no effect on v2 queues.

Teams see one of two problems: the deprecation warning on the setting, or unexpectedly heavy disk I/O. The I/O is usually not caused by “lazy mode” at all under CQv2; it is deep queues being paged to disk, or a memory alarm forcing eager paging.

Common Causes

  • An x-queue-mode: lazy argument or queue-mode policy carried over from 3.8/3.11 that no longer does anything on CQv2.
  • Very deep queues (millions of messages) whose bodies are paged to disk, driving continuous I/O.
  • A vm_memory_high_watermark breach forcing the broker to page messages to disk aggressively.
  • Slow or contended storage (network-attached disks) making normal CQv2 paging look like a fault.
  • Assuming lazy mode still bounds memory when CQv2 already handles this differently.

Diagnostic Commands

Check whether the deprecated queue-mode feature is in use:

rabbitmq-diagnostics list_deprecated_features --used

Show which queues carry a queue-mode argument or policy:

rabbitmqctl list_queues name arguments policy messages --formatter=pretty_table

Look at memory breakdown to see how much is queue message bodies vs. paged out:

rabbitmq-diagnostics memory_breakdown

Confirm you are not hitting a disk-space alarm that blocks publishers:

rabbitmq-diagnostics status | grep -A3 disk_free

Step-by-Step Resolution

  1. Confirm whether lazy mode is even active. On CQv2 it is a no-op, so removing it changes nothing but clears the warning:
rabbitmq-diagnostics list_deprecated_features --used
rabbitmqctl list_queues name arguments -p /
  1. Remove the deprecated queue-mode policy so the warning stops:
rabbitmqctl clear_policy -p / lazy-mode
  1. Verify your classic queues are actually v2. CQv1 was removed in 4.0, but on 3.12/3.13 check the version and set the default if needed in rabbitmq.conf:
classic_queue.default_version = 2
  1. If the real problem is disk I/O from deep queues, reduce queue depth. Add consumers or raise prefetch so bodies are not paged repeatedly:
watch -n 2 'rabbitmqctl list_queues name messages messages_ready messages_unacknowledged'
  1. If a memory alarm is forcing paging, raise the watermark or add RAM, then confirm the alarm clears:
rabbitmq-diagnostics alarms
  1. For workloads that genuinely need disk-first, high-throughput retention, migrate to quorum queues or streams rather than relying on the removed lazy mode. Verify the new queue type:
rabbitmqctl list_queues name type messages

Prevention

  • Drop x-queue-mode / queue-mode from definitions and IaC; it is a no-op on CQv2 and blocks clean upgrades.
  • Run rabbitmq-diagnostics list_deprecated_features --used as a pre-upgrade gate.
  • Size storage for CQv2 paging and prefer local SSD over network disks for queue data.
  • Keep queues shallow with adequate consumer parallelism; deep queues drive disk I/O regardless of mode.
  • Use quorum queues or streams for durable, high-retention workloads instead of legacy lazy classic queues.
  • Free disk space is insufficient ... Publishers will be blocked — a disk-space resource alarm, often confused with lazy-mode I/O.
  • vm_memory_high_watermark ... connections blocked — a memory alarm forcing paging.
  • Deprecated features used: classic_queue_mirroring — another removed classic-queue feature flagged the same way.
  • PRECONDITION_FAILED - inequivalent arg 'x-queue-mode' — redeclaring a queue with a different mode argument.

Frequently Asked Questions

Does setting x-queue-mode: lazy still do anything? Not on classic queues v2. Since RabbitMQ 3.12 the v2 engine pages to disk automatically, so queue-mode is deprecated and has no effect. Removing it only clears the warning.

Why did disk I/O spike after I converted queues to lazy mode? The I/O is usually deep queues being paged to disk under CQv2, or a memory alarm forcing paging, not the mode setting itself. Reduce queue depth or add consumers.

What should I use instead of lazy queues for large backlogs? Quorum queues or streams are the modern durable options. A migration-planning prompt is in the RabbitMQ prompt library.

How do I confirm lazy mode is safe to remove before upgrading? Run rabbitmq-diagnostics list_deprecated_features --used; an empty result means nothing depends on it. For more messaging fixes, see the RabbitMQ guides.

Free download · 368-page PDF

Fixed it? Get 500 RabbitMQ & DevOps AI prompts — free

500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.

  • 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
  • Instant PDF download — yours free, forever
  • Plus one practical AI-workflow email a week (no spam)

Single opt-in · unsubscribe anytime · no spam.

Did this fix your issue?

Free download · 368-page PDF

Get 500 Battle-Tested DevOps AI Prompts — Free

500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.

  • 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
  • Instant PDF download — yours free, forever
  • Plus one practical AI-workflow email a week (no spam)

Single opt-in · unsubscribe anytime · no spam.