写入大查询时,用于云监控指标的 App Engine 引发 500 错误

Posted

技术标签:

【中文标题】写入大查询时,用于云监控指标的 App Engine 引发 500 错误【英文标题】:App Engine for cloud monitoring metrics throwing 500 error when writing to big query 【发布时间】:2020-11-12 09:23:18 【问题描述】:

我想将 Metrics 从 Cloud Monitoring 导出到 Big Query,谷歌已经给出了如何做到这一点的解决方案。我正在关注这篇this 文章。

我已经从github 下载了代码,我能够成功部署和运行应用程序(python2.7),

我将聚合调整期指定为 86400s(我想从 7 月 1 日开始每天聚合指标) 其中一个应用引擎 write-metrics 应用引擎通过将 api 响应作为 pub-sub 消息将指标写入大查询,总是向我抛出这些错误:

> 在服务 5 个请求后,超过 270 MB 的软内存限制 256 MB。考虑在 app.yaml 中设置更大的实例类。

> 在处理这个请求时,发现处理这个请求的进程使用了​​太多内存并被终止。这可能会导致一个新进程被用于对您的应用程序的下一个请求。如果您经常看到此消息,则您的应用程序中可能存在内存泄漏,或者可能正在使用内存不足的实例。考虑在 app.yaml 中设置更大的实例类。

上面是 500 错误并且非常频繁,我发现重复记录仍然被插入到 BigQuery 的表中 还有下面这个

DeadlineExceededError:超过响应 HTTP 请求的总期限。

应用引擎日志经常显示带有代码 500 和 200 的 POST

在应用引擎(标准)中,我已将缩放添加为自动,并在 app.yaml 中设置如下:

automatic_scaling:
  target_cpu_utilization: 0.65
  min_instances: 5
  max_instances: 25
  min_pending_latency: 30ms
  max_pending_latency: automatic
  max_concurrent_requests: 50

但这似乎没有效果。我对应用引擎、谷歌云及其堆栈驱动指标非常陌生。

【问题讨论】:

愚蠢的问题,但是您是否尝试过在 app.yaml 中增加实例类?你的 app.yaml 有这样的字段吗? 看来,您需要使用 AppEngine Flex 来更改软内存限制***.com/a/57470956/946789 @NicholasElkaim 我试过 instance_class 但该字段未被接受为合法标识符 instance_class 作品我应该放在正确的地方 【参考方案1】:

此更改使其生效

instance_class: F4_1G

这需要作为一个独立的标签,之前我犯了把automatic scaling:放在下面的错误,所以它给出了非法修饰符

【讨论】:

以上是关于写入大查询时,用于云监控指标的 App Engine 引发 500 错误的主要内容,如果未能解决你的问题,请参考以下文章

统一观测丨使用 Prometheus 监控 E-MapReduce,我们该关注哪些指标?

云监控服务使用教程详解

docker容器部署Prometheus服务——云平台监控利器

prometheus能监控哪些指标

linux性能指标

Prometheus 监控云Mysql和自建Mysql(多实例)