Question

Load Balancer 504 gateway timeout

I’m getting a lot of 504 gateway timeout when sending requests to my load balancer, especially when POSTing data.

The LB is hit with about 30 request/second, well under the 200 request/second mentionned here.

This doesn’t seem to be correctly shown as a 5xx error code in the graphs of the load balancer, as the number of 5xx shown is inferior to the number I generate just by trying the endpoint manually.

When the request does get through, response time is always under 150ms.

I’m seeing 0 in the Queue metric for the droplets, and I have about 20 concurrent connections according to the LB.

Behind the LB is 3 2vCPU 2GB droplets running nginx as a reverse proxy to NodeJS (pm2 clusters with 1 instance per vCPU, so 6 instances of the application in total).

My questions are : 1 - What steps would you recommend I follow to isolate the cause of the 504 errors 2 - Why does the Queue metric never move from 0 even as I have tons of timeouts

I remain available for any clarification deemed necessary Thanks in advance

Antoine


Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

I’m having the same issue with a PHP application with max_execution_time set to 300s. The load balancer returns an HTTP 504 after exactly 60s.

Neither the interface nor the API for load balancers provide a way to change this limit.

Arguably a web application shouldn’t take more than 60s to answer, but of course there is always this very special case…

Hey @bobbyiliev,

I’m using DigitalOcean’s load balancers, not hosting it myself, there’s no timeout config (except for healthchecks) that I’m aware of?

In the nginx access log I can see a lot of 499 and 504. The 499 make sense considering the minute long timeout, people probably moved on to another page and their browser cancels the POST request. I still can’t figure out why there’s such a delay, but that does sound like its my problem in the backend.

Does anyone know how to get the Queue metric to reflect something in DO GUI? I read https://www.digitalocean.com/community/questions/do-load-balancer-what-is-the-queue but I don’t see any concrete answer to my question in there.

Thanks, Antoine

Hello,

Even though I believe that this is more of an issue with the backend servers, have you tried increasing the timeout on the load balancer itself and see if the error persists?

Also have you checked the logs on your backend servers? I would recommend starting with the Nginx logs, there might be some useful information there.

Regards, Bobby