Is it possible to increase CloudFlare time-out?
Asked Answered
D

8

55

Is it possible to increase CloudFlare's time-out? If yes, how?

My code takes a while to execute and I wasn't planning on Ajaxifying it the coming days.

enter image description here

Dropkick answered 22/7, 2016 at 22:35 Comment(3)
You could handle requests that take longer than 100 seconds through a subdomain that is not on Cloudflare.Angstrom
@RuudLenders: I asked CloudFlare about this, and they said as follows: "I will suggest to verify on why it takes more than 100 seconds for the reports. Disabling Cloudflare on the sub-domain, allow attackers to know about your origin IP and attackers will be attacking directly bypassing Cloudflare."Somite
Cloudflare timeout gives a 524. If you are getting a 504 it means that is your server that is timing outPellitory
M
60

No, CloudFlare only offers that kind of customisation on Enterprise plans.

  • CloudFlare will time out if it fails to establish a HTTP handshake after 15 seconds.
  • CloudFlare will also wait 100 seconds for a HTTP response from your server before you will see a 524 timeout error.
  • Other than this there can be timeouts on your origin web server.

522 on CloudFlare with SYN/ACK 522 on CloudFlare with ACK timeout

It sounds like you need Inter-Process Communication. HTTP should not be used a mechanism for performing blocking tasks without sending responses, these kind of activities should instead be abstracted away to a non-HTTP service on the server. By using RabbitMQ (or any other MQ) you can then pass messages from the HTTP element of your server over to the processing service on your webserver.

Pub/Sub IPC

Manufacture answered 27/7, 2016 at 13:31 Comment(2)
It seems like the 90 second timeout is now 60 seconds.Raji
API documentation for enterprise users: developers.cloudflare.com/api/operations/…Holusbolus
P
20

Cloudflare doesn't trigger 504 errors on timeout

  • 504 is a timeout triggered by your server - nothing to do with Cloudflare.
  • 524 is a timeout triggered by Cloudflare.

See: https://support.cloudflare.com/hc/en-us/articles/115003011431-Troubleshooting-Cloudflare-5XX-errors#502504error

524 error? There is a workaround:

As @mjsa mentioned, Cloudflare only offers timeout settings to Enterprise clients, which is not an option for most people.

However, you can disable Cloudflare proxing for that specific (sub)domain by turning the orange cloud into grey:

Before:

  • enter image description here

After:

  • enter image description here

Note: it will disable extra functionalities for that specific (sub)domain, including IP masking and SSL certificates.

As Cloudflare state in their documentation:

If you regularly run HTTP requests that take over 100 seconds to complete (for example large data exports), consider moving those long-running processes to a subdomain that is not proxied by Cloudflare. That subdomain would have the orange cloud icon toggled to grey in the Cloudflare DNS Settings . Note that you cannot use a Page Rule to circumvent Error 524.

Pellitory answered 12/4, 2021 at 16:35 Comment(1)
The page you refer to says that Cloudflare can trigger 504 errors.Kagera
S
12

I was in communication with Cloudflare about the same issue, and also with the technical support of RabbitMQ.

RabbitMQ suggested using Web Stomp which relies on Web Sockets. However Cloudflare suggested...

Websockets would create a persistent connection through Cloudflare and there's no timeout as such, but the best way of resolving this would be just to process the request in the background and respond asynchronously, and serve a 'Loading...' page or similar, rather than having the user to wait for 100 seconds. That would also give a better user experience to the user as well

UPDATE:

For completeness, I will also record here that I also asked CloudFlare about running the report via a subdomain and "grey-clouding" it and they replied as follows:

I will suggest to verify on why it takes more than 100 seconds for the reports. Disabling Cloudflare on the sub-domain, allow attackers to know about your origin IP and attackers will be attacking directly bypassing Cloudflare.

FURTHER UPDATE

I finally solved this problem by running the report using a thread and using AJAX to "poll" whether the report had been created. See Bypassing CloudFlare's time-out of 100 seconds

Somite answered 23/5, 2017 at 15:46 Comment(1)
without keeping the request connection means that we need a 2-way communication channel so that the response will be fed back to the client after the original request completed. So we cannot use ajax (on front-end side) as usual, or simply use it to just post the request and gets an OK response almost immediately. The actual result will be received by such as using SignalR (which should be better than polling)Neisse
A
3

https://support.cloudflare.com/hc/en-us/articles/115003011431-Troubleshooting-Cloudflare-5XX-errors#502504error

Cloudflare 524 error results from a web page taking more than 100 seconds to completely respond.

This can be overridden to (up to) 600 seconds ... if you change to "Enterprise" Cloudflare account. The cost of Enterprise is roughtly $40k per year (annual contract required).

Anomalism answered 7/12, 2021 at 1:41 Comment(0)
C
2

I know that it cannot be treated like a solution but there is a 2 ways of avoiding this. 1) Since this timeout is often related to long time generating of something, this type of works can be done through crontab or if You have access to SSH you can run a PHP command directly to execute. In this case connection is not served through Cloudflare so it goes as long as your configuration allows it to run. Check it on Google how to run scripts from command line or how to determine them in crontab by using /usr/bin/php /direct/path/to/file.php

2) You can create subdomain that is not added to cloudlflare and move Your script there and run them directly through URL, Ajax call or whatever.

There is a good answer on Cloudflare community forums about this:

If you need to have scripts that run for longer than around 100 seconds without returning any data to the browser, you can’t run these through Cloudflare. There are a couple of options: Run the scripts via a grey-clouded subdomain or change the script so that it kicks off a long-running background process and quickly returns a status which the browser can poll until the background process has completed, at which point the full response can be returned. This is the way most people do this type of action as keeping HTTP connections open for a long time is unreliable and can be very taxing also.

This topic on Stackoverflow is high in SERPs so I decided to write down this answer for those who will find it usefull.

Cosmography answered 31/3, 2020 at 7:43 Comment(0)
A
1

Note that if you are seeing Cloudflare's 504 errors prematurely after only 60 seconds (and you expected it to be only after 100 seconds), it's probably your Nginx configuration that, by default, only waits for 60 seconds for the upstream to respond.

In your nginx config, you can change the default to a higher value:

proxy_read_timeout 120s;
proxy_connect_timeout 120s;
proxy_send_timeout 120s;

Setting them to anything greater than 100 seconds will make sure that you hit Cloudflare's timeout first instead of your own server's.

Azobenzene answered 12/9, 2023 at 6:6 Comment(1)
Not works for me I set 700s but it seems is about 30s. In flutter I see "Payload Too Large" and "Error: HttpException: Connection closed before full header was received, uri = app.mrantic.ir/…" it work fine in browser, Do you have any idea for me?Waxwork
O
0

If you are getting your results with curl, you could use the resolve option to directly access your IP, not using the Cloudflare proxy IP:

For example:

curl --max-time 120 -s -k --resolve lifeboat.com:443:127.0.0.1 -L https://lifeboat.com/blog/feed 
Originally answered 13/9, 2021 at 4:48 Comment(0)
F
0

The simplest way to do this is to increase your proxy waiting timeout. If you are using Nginx for instance you can simply add this line in your /etc/nginx/sites-availables/your_domain:

location / {
  ... 
  proxy_read_timeout 600s; # this increases it by 10mins; feel free to change as you see fit with your needs.
  ...

}

If the issue persists, make sure you use let's encrypt to secure your server alongside Nginx and then disable the orange cloud on that specific subdomain on Cloudflare.

Here are some resources you can check to help do that

Furious answered 20/7, 2022 at 21:44 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.