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.
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

I reply with scope and a proposal.