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

Subscribe
Share

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

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.

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