Я столкнулся с очень странной проблемой, связанной с поведением AppEngine.В настоящее время мы переходим с версии 1.9 на версию 1.12, поскольку версия 1.9 устареет после 1 октября.Все прошло гладко, все API перенесены и т. Д., И т. Д. Протестировано в промежуточной среде (отдельный проект GC в течение нескольких дней).
После перехода в производство все было хорошо в течение примерно 6 часов (!), Послечто все запросы истекают.Предыдущая версия 1.9 поддерживалась и трафик перенаправлялся на нее.
Теперь это, по-видимому, не проблема загрузки: после инцидента развертывание среды выполнения Go 1.12 без переключения ее в качестве активной версии и частного доступа (один запрос!) не может быть обработан своевременно, если обработчик приложения должен сделать какой-либо запрос: к хранилищу, хранилищу данных или даже простому http-запросу не работает!например, даже сузив его до:
, поместив этот код в main до того, как все остальное выдаст время ожидания после развертывания!
Стандартная среда AppEngine.Go1.12.Так что нет urlfetch.Пример кода (даже без запросов, несколько URL-адресов проверены, все работают локально и в STG Google Cloud Project с одним и тем же кодом):
func main() {
fmt.Printf("Testing request to external server\n")
resp, err := http.Get("https://www.example.com")
if err != nil {
fmt.Printf("Error making request to external server: %v\n", err)
}
data, err := ioutil.ReadAll(resp.Body)
if len(string(data)) > 255 {
fmt.Printf("Content: %v\n", string(data)[0:255])
} else {
fmt.Printf("Content: %v\n", string(data))
}
resp.Body.Close()
...
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), r))
}
Это сообщение появляется при запуске экземпляра после развертывания
Error making request to external server: Get https://www.example.com: dial tcp 123.123.123.123: i/o timeout
Start program failed: failed to detect app after start: ForAppStart(): [aborted, context canceled. subject:"app/valid" Timeout:30m0s, attempts:6073 aborted, context canceled. subject:"app/invalid" Timeout:30m0s, attempts:6074]
(2-я строка понятна - она просто не может подключиться и ждет слишком долго).
Самое странное, если этот код развернуть в промежуточной среде (точно такой же файл), он работает.Похоже, что у GAE закончились попытки подключения или что-то подобное в производственной среде за несколько часов (это довольно загруженный проект) и не может быть продолжено.
В чем может быть проблема такого поведения?Это ошибка?Что может быть утечка и как это диагностировать?У меня заканчиваются идеи, я гуглю часами, любая помощь будет признательна.