【问题标题】:Google App Engine (Java 11 Standard, basic_scaling) idle_timeout not working?Google App Engine(Java 11 标准,basic_scaling)idle_timeout 不起作用?
【发布时间】:2020-02-13 13:26:58
【问题描述】:

我在 App Engine Java 11 标准环境中部署了一个 Java Spring-Boot 应用程序。 我的 app.yaml 配置非常简单:

runtime: java11
env: standard
instance_class: B4

handlers:
  - url: .*
    script: auto

basic_scaling:
  idle_timeout: 3600s
  max_instances: 1

如果我没记错的话,这应该让实例在关闭前运行一个小时。当我查看日志时,我可以看到在创建实例几分钟后发送 /_ah/stop 请求并且实例关闭:

2020-02-13T12:43:35.125504Z GET 200 95 B 23,3 s Unknown /_ah/start I GET 200 95 B 23,3 s
2020-02-13T12:43:45.590697Z   .   ____          _            __ _ _ A 
2020-02-13T12:43:45.590710Z  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \ A 
2020-02-13T12:43:45.591215Z ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ A 
2020-02-13T12:43:45.591236Z  \\/  ___)| |_)| | | | | || (_| |  ) ) ) ) A 
2020-02-13T12:43:45.591251Z   '  |____| .__|_| |_|_| |_\__, | / / / / A 
2020-02-13T12:43:45.591266Z  =========|_|==============|___/=/_/_/_/ A 
2020-02-13T12:43:45.596711Z  :: Spring Boot ::        (v2.2.3.RELEASE) A 
[...]
2020-02-13T12:50:34.948123Z GET 200 95 B 59 ms Unknown /_ah/stop A GET 200 95 B 59 ms

为什么会这样?实例不应该保持空闲至少 60 分钟吗?我在这里做错了什么还是 Google App Engine 有问题?

【问题讨论】:

  • 您的实例在收到请求后是否立即关闭?
  • 是的,差不多。当我随后立即打开“/var/log/google_init.log”时,它还会记录:2020-02-13T12:50:35.495014Z [start] 2020/02/13 13:50:35.494065 退出终止信号 2020 -02-13T12:50:35.504274Z [开始] 2020/02/13 13:50:35.503817 启动程序失败:用户应用程序失败,退出代码为 -1(有关更多详细信息,请参阅 stdout/stderr 日志):信号:终止 2020 -02-13T12:50:35.709105967Z 容器名为 exit(1)。

标签: java spring-boot google-app-engine


【解决方案1】:

仅适用于像我一样面临此问题的开发人员。尝试设置

max_instances: 2

或者更大,在我看来 appengine 是在 max_instances 上触发的: 1. 它认为已达到最大实例数,甚至关闭单个实例。无论如何 max_instances=2 - 对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多