0

I have a compute engine VM instance with a docker image. It has a server that does expensive computations that take around 2 minutes for each request.

The server responds perfectly for small requests. For larger ones it responds with the following:

<HEAD><TITLE>Connection Timed Out</TITLE></HEAD>
<BODY BGCOLOR="white" FGCOLOR="black">
<FONT FACE="Helvetica,Arial"><B>
 Connection Timed Out</B></FONT>

<!-- default "Connection Timed Out" response (504) -->
</BODY>

The server in my docker container does not return this.

Looking at what 504 errors mean:

The server, while acting as a gateway or proxy, did not receive a timely response from the upstream server specified by the URI (e.g. HTTP, FTP, LDAP) or some other auxiliary server (e.g. DNS) it needed to access in attempting to complete the request.

Note: Note to implementors: some deployed proxies are known to return 400 or 500 when DNS lookups time out.

That clearly shows that compute engine has a proxy that times out after 30 seconds and gives the above response.

Looking at the stackdriver logs I see that my server does receive the request and does process it, but before it's finished, I get the response above instead.

How do I stop compute engine from intervening with my server logic? Or at least how do I increase the timeout limit?

Adham Zahran
  • 111
  • 5
  • Could you provide more information: 1. What's machine type of your VM? 2. Why requests take up to 2 min? 3. Did you configure your web server to keep sessions for up to 2 min? 4. Why do you think that compute engine "intervening" "server logic"? – Serhii Rohoza Feb 13 '20 at 16:08
  • I edited my question. 1) n1-standard-2. 2) It does expensive computations. 3) Yes. I wrote the server. 4) It's a 504 response that my server does not return. – Adham Zahran Feb 13 '20 at 16:48
  • Please provide configuration of your web server that makes it able to keep your clients waiting up to 2 minutes while your server does computing. Also, it'll be useful to know architecture of your service. As you can find in the documentation GCE doesn't use any proxies by default. – Serhii Rohoza Feb 13 '20 at 18:58

1 Answers1

1

The issue was solved by using port 8080, any port other than 80 would work.

For some reason GCE would not intervene with your affairs if you don't use port 80.

Adham Zahran
  • 111
  • 5