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
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!
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
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
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…
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.