Skip to content

nginx built with --with-libatomic on ARM loses updates and refuses new visitors

On 14 October 2026, a production nginx on an ARM server started to refuse every new visitor with error 429. The cause is the --with-libatomic build option. The test, the patch and the fix are on GitHub.

By Wendelmaques Pereira ·

Source: nginx --with-libatomic on aarch64: the shared-memory lock loses updates (github.com). Text prepared with AI from this source.

What happened and what to do

On 14 October 2026, an nginx 1.30.5 on an ARM server (Ampere Altra) started to refuse every new visitor with error 429. The cause is the --with-libatomic build option. On ARM, this option removes the memory barrier from the lock that protects nginx shared memory. Two workers lose updates, and one entry of the limit_req zone stays stuck. The zone stops removing old entries, fills up and refuses every new address. In a test with 10 million updates on the same CPU, the option lost 69,320 updates; without it, none.

If your nginx runs on ARM (AWS Graviton, Ampere), run nginx -V. If the output shows --with-libatomic, build nginx without this option or apply the patch from the wrpbr/nginx-libatomic-aarch64 repository. Then recreate the shared memory zones. Intel and AMD servers are not affected.

How the consultancy can help

Wendelmaques can review the build and configuration of nginx and other edge servers, set up alarms that tell you when visitors are refused, and replace an edge server without refusing connections.

Next step

Send the output of nginx -V and the server architecture to receive a scoped assessment.

Let's assess your project

Wendelmaques Pereira

I reply with scope and a proposal.

WhatsApp

eu@wendelmaques.com

Looking for something else?Frequently asked questionsGuidesContact