Назад | Перейти на главную страницу

Экземпляр Compute Engine, которому требуется 60 секунд для обработки запроса, но время ожидания ответа истекает

У меня есть экземпляр виртуальной машины вычислительного движка с изображением докера. У него есть сервер, который выполняет дорогостоящие вычисления, которые занимают около 2 минут на каждый запрос.

Сервер отлично отвечает на небольшие запросы. Для более крупных он отвечает следующим образом:

<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>

Сервер в моем контейнере докеров этого не возвращает.

Посмотрим, что означают ошибки 504:

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.

Это ясно показывает, что у вычислительного движка есть прокси, который отключается через 30 секунд и дает вышеуказанный ответ.

Просматривая журналы stackdriver, я вижу, что мой сервер действительно получает запрос и обрабатывает его, но до его завершения я вместо этого получаю ответ выше.

Как мне запретить вычислительному механизму вмешиваться в мою серверную логику? Или хотя бы как увеличить лимит таймаута?

Проблема была решена использованием порта 8080, подойдет любой порт кроме 80.

По какой-то причине GCE не будет вмешиваться в ваши дела, если вы не используете порт 80.