Google App Engine автоматически перезагружается случайным образом - PullRequest
0 голосов
/ 20 апреля 2020

Мы работаем с сервером узлов в GAE, и по какой-то причине несколько раз в день наш сервер отключается (иногда может потребоваться несколько минут, чтобы вернуться в сеть).

Запросы одинаковы в течение дня, и нет никаких исключений, которые могли бы стать причиной перезапуска. В запросах или каких-либо особых запросах, которые могли бы это вызвать, не было резкого скачка.

Журнал, когда это происходит:

2020-04-18T23:48:51.881806Z [GET /v1/util/example [36m304 [35.262 ms - -[ A 
2020-04-18T23:50:17.119906Z [start] 2020/04/18 23:50:17.119185 Quitting on terminated signal A 
2020-04-18T23:50:17.175632Z [start] 2020/04/18 23:50:17.175267 Start program failed: user application failed with exit code -1 (refer to stdout/stderr logs for more detail): signal: terminated 
2020-04-18T23:51:38.772388Z GET 304 173 B 3.3 s Example-V2/3.1.13 (com.example.app; build:1; iOS 13.4.0) Alamofire/5.1.0 /v1/util/example GET 304 173 B 3.3 s Example-V2/3.1.13 (com.example.app; build:1; iOS 13.4.0) Alamofire/5.1.0 5e9b928a00ff0bc9244f94194c0001737e737065616b2d76322d32613166310001737065616b2d6170693a323032303034303374303630343431000100
2020-04-18T23:51:38.786760Z GET 404 324 B 2.4 s Unknown /_ah/start GET 404 324 B 2.4 s Unknown 5e9b928a00ff0c014898f5c27f0001737e737065616b2d76322d32613166310001737065616b2d6170693a323032303034303374303630343431000100
2020-04-18T23:51:39.529080Z [start] 2020/04/18 23:51:39.511828 No entrypoint specified, using default entrypoint: /serve 
2020-04-18T23:51:39.529642Z [start] 2020/04/18 23:51:39.528742 Starting app 
2020-04-18T23:51:39.529968Z [start] 2020/04/18 23:51:39.529100 Executing: /bin/sh -c exec /serve 
2020-04-18T23:51:39.590085Z [start] 2020/04/18 23:51:39.589751 Waiting for network connection open. Subject:"app/invalid" Address:127.0.0.1:8080 
2020-04-18T23:51:39.590571Z [start] 2020/04/18 23:51:39.590347 Waiting for network connection open. Subject:"app/valid" Address:127.0.0.1:8081 
2020-04-18T23:51:39.764383Z [serve] 2020/04/18 23:51:39.763656 Serve started. 
2020-04-18T23:51:39.764935Z [serve] 2020/04/18 23:51:39.764544 Args: {runtimeName:nodejs10 memoryMB:1024 positional:[]} 
2020-04-18T23:51:39.766562Z [serve] 2020/04/18 23:51:39.765904 Running /bin/sh -c exec node server.js 
2020-04-18T23:51:41.072621Z [start] 2020/04/18 23:51:41.071895 Wait successful. Subject:"app/valid" Address:127.0.0.1:8081 Attempts:296 Elapsed:1.481194491s 
2020-04-18T23:51:41.072978Z Express server started on port: 8081 
2020-04-18T23:51:41.073008Z [start] 2020/04/18 23:51:41.072411 Starting nginx 
2020-04-18T23:51:41.085901Z [start] 2020/04/18 23:51:41.085451 Waiting for network connection open. Subject:"nginx" Address:127.0.0.1:8080 
2020-04-18T23:51:41.132064Z [start] 2020/04/18 23:51:41.131572 Wait successful. Subject:"nginx" Address:127.0.0.1:8080 Attempts:9 Elapsed:45.911234ms 
2020-04-18T23:51:41.170786Z [GET /_ah/start [33m404 [11.865 ms - 61[

Всегда доступно более 70% свободной памяти, так что это невозможно проблема. Только заметил очень высокую загрузку ЦП, когда происходит перезапуск (в 10 раз выше, чем обычно).

На нижнем рисунке вы можете четко видеть, когда происходит перезапуск: CPU utilization

Это мой app.yaml

runtime: nodejs10
instance_class: B4
service: example-api

basic_scaling:
  max_instances: 1
  idle_timeout: 30m

handlers:
  - url: .*
    secure: always
    script: auto

Это происходит на нашем производственном сервере, поэтому любая помощь будет более чем приветствоваться.

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Читая этот документ , упоминается, что, хотя они пытаются поддерживать базовые c и экземпляры ручного масштабирования в течение неопределенного времени, они иногда перезапускаются для обслуживания или могут выйти из строя по некоторым другим причинам. Вот почему сохранение ваших максимальных экземпляров равным 1 не считается наилучшей практикой, так как подвержено всем этим сбоям. Как уже упоминалось в другом ответе, я бы также рекомендовал увеличить количество экземпляров, чтобы снизить вероятность повторного сбоя или повторного запуска одновременно.

1 голос
/ 21 апреля 2020

У нас была такая же проблема, когда мы переводили наше приложение Ruby на Rails в стандарт Google App Engine Standard в год go. После переписки по электронной почте с поддержкой Google Cloud они предложили: «увеличение минимального количества экземпляров поможет, потому что у вас будет больше« резервных »экземпляров».

В то время у нас было два экземпляра, и так как мы Подняв его до трех экземпляров, у нас не было простоев, связанных с неожиданными перезапусками серверов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...