# SQS Consumers Using Short Polling | Cloud Efficiency Hub

Canonical: https://www.pointfive.co/efficiency-hub/inefficiencies/sqs-consumers-using-short-polling

Amazon SQS uses short polling by default: a ReceiveMessage call queries a subset of servers and returns immediately, even when no messages are found.

By: PointFive

Updated: 2026-09-28

[Cloud Efficiency Hub](https://www.pointfive.co/efficiency-hub) 

The short version

Amazon SQS uses short polling by default: a ReceiveMessage call queries a subset of servers and returns immediately, even when no messages are found.

PointFive Research

Cloud cost research at PointFive

AWS service

[AWS SQS](https://www.pointfive.co/efficiency-hub/cloud-services/aws-sqs)

Category

[Other](https://www.pointfive.co/efficiency-hub/service-category/other)

Reference

CER-0389

Type

Inefficient Configuration

## Explanation

Why the waste happens and who it affects.

Consumers written as tight receive loops, running on containers, EC2 instances or scheduled workers, therefore issue a constant stream of ReceiveMessage calls, and most of them come back empty on quiet queues. Every one of those calls is a billable SQS request.

The pattern is most costly on low-traffic queues that have many pollers, such as per-tenant or per-environment queues, dead-letter queues watched by a worker, and development queues that nobody sends to but whose consumers keep running. Short polling can also return false empty responses when messages are available but not on the sampled servers, which prompts even more polling. AWS documents long polling as a way to reduce the cost of using SQS, and it is a single queue attribute or request parameter. Lambda event source mappings already use long polling, so this mainly affects custom consumers.

## Billing model

The pricing dimensions that drive this cost.

SQS bills by request, and empty responses are requests too.

Requests

Every Amazon SQS action counts as a request, including ReceiveMessage calls that return no messages

Payload chunks

Each 64 KB chunk of a payload is billed as one request

Batching

A single request can carry 1 to 10 messages, up to a total payload of 1 MiB

Free tier

All customers get the first 1 million SQS requests each month free

## How to detect

5 checks to find it in your estate.

- Compare the CloudWatch metric NumberOfEmptyReceives with NumberOfMessagesReceived per queue; AWS notes that high empty-receive counts can indicate that consumers use short polling or that polling is inefficient

- Check each queue's ReceiveMessageWaitTimeSeconds attribute (get-queue-attributes); a value of 0 combined with consumers that do not set WaitTimeSeconds means short polling is in effect

- Review consumer code and SDK configuration for ReceiveMessage calls without WaitTimeSeconds, or with WaitTimeSeconds set to 0, and for fixed polling loops with little or no sleep

- Look at SQS request charges in Cost Explorer against actual message volume; request counts far above what message traffic explains usually come from empty receives

- List queues with running consumers but little or no NumberOfMessagesSent, such as idle development or dead-letter queues

## How to fix

5 ways to remove the waste.

- Enable long polling by setting ReceiveMessageWaitTimeSeconds on the queue or WaitTimeSeconds on each ReceiveMessage call; AWS recommends 20 seconds (the maximum) in most cases, or a shorter value down to 1 second if needed

- Make sure the HTTP client response timeout for ReceiveMessage is longer than WaitTimeSeconds to avoid HTTP errors, and adjust clients that are not AWS SDKs or that are configured with shorter timeouts

- When one application long-polls several queues, use one thread per queue so waiting on an empty queue does not block processing of others

- Receive, send and delete in batches of up to 10 messages per request to reduce request counts further

- Stop or scale down consumers attached to queues that no longer receive messages

## Documentation

Vendor references for pricing and configuration.

- [Amazon SQS short and long polling  docs.aws.amazon.com](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)

- [Setting-up long polling in Amazon SQS  docs.aws.amazon.com](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/best-practices-setting-up-long-polling.html)

- [Available CloudWatch metrics for Amazon SQS  docs.aws.amazon.com](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html)

- [Amazon SQS Pricing  aws.amazon.com](https://aws.amazon.com/sqs/pricing/)

## Related inefficiencies

[Browse the library](https://www.pointfive.co/efficiency-hub)

- AWS EventBridge  CER-0170

### [Disabled Retry Policies in EventBridge](https://www.pointfive.co/efficiency-hub/inefficiencies/disabled-retry-policies-in-eventbridge)

By default, EventBridge retries delivering an event to a target for up to 24 hours and up to 185 times when targets like Lambda functions or Step Functions fail with retriable errors. However, if a target's retry policy is set to 0...

Other

- AWS CloudWatch  CER-0224

### [Suboptimal Log Class Configuration in CloudWatch](https://www.pointfive.co/efficiency-hub/inefficiencies/suboptimal-log-class-configuration-in-cloudwatch)

By default, CloudWatch Log Groups use the Standard log class, which has a higher per-GB ingestion price. AWS also offers an Infrequent Access (IA) log class designed for logs that are rarely queried - such as audit trails, debugging...

Other

- AWS CloudTrail  CER-0016

### [Duplicate or Overlapping AWS CloudTrail Trails](https://www.pointfive.co/efficiency-hub/inefficiencies/duplicate-or-overlapping-aws-cloudtrail-trails)

AWS CloudTrail enables event logging across AWS services, but when multiple trails are configured to log overlapping events - especially data events - it can result in redundant charges and unnecessary storage or ingestion costs. This...

Other

---
Source: the public page above. Product screenshots and illustrative interfaces are examples, not live customer data.

