【问题标题】:Google App Engine "Exceeded soft memory limit on "Google App Engine“超出软内存限制”
【发布时间】:2020-04-23 10:14:22
【问题描述】:

我们在 Google App Engine(GAE) 上有长期运行的服务。然而,过了一会儿,我们开始得到图像中的错误。代码没有变化。我不明白为什么我们会遇到以前没有的问题。

2020-01-05 08:31:32.704 UTC-8 总共服务 0 个请求后,超过 2048 MB 的软内存限制为 2068 MB。考虑在 app.yaml 中设置更大的实例类。

2020-01-05 08:31:32.705 UTC-8 此请求导致为您的应用程序启动一个新进程,从而导致您的应用程序代码首次加载。因此,与您的应用程序的典型请求相比,此请求可能需要更长的时间并使用更多的 CPU。

2020-01-05 08:31:32.705 UTC-8 预热请求失败。请检查您的预热处理程序实施并确保其正常工作。

编辑:系统信息;

我们正在运行 python。 我有 cronjobs。

【问题讨论】:

  • 这意味着发生了内存泄漏。你能告诉我更多关于你正在使用的系统吗?你在运行 Java/Python 吗?如果您使用的是 ndb,在单个查询获取中加载相当多的实体将导致超出内存限制。或者您可能正在从第三方系统加载相当多的数据块。 (将所有数据保存在内存中)。
  • 我们正在运行 python。实际上,我检查了是否有太多数据加载。我删除了从数据库中获取的数据的缓存。我什至以不同的结构设置了另一个新服务。总是发生同样的错误。我找不到这个通常不会出现的错误的来源。难道是因为谷歌的新业务? @yaswanth
  • @sumeyye 正如 yaswanth 所说,这是一个内存问题,您可能在某处有内存泄漏,与谷歌无关。使用分析器仔细检查您的应用程序,检查内存使用情况并尝试了解您可以采取哪些措施来修复它,或者您是否需要更大内存的实例
  • 如果您使用的是“inbound_service: warmup”,请尝试删除它

标签: google-app-engine google-cloud-platform app-engine-flexible


【解决方案1】:

你知道在本地运行它会消耗多少内存吗?

使用处于测试阶段的Stackdriver Profiler,您可以了解您的内存使用情况。

当出现 Exceeded soft private memory limit 错误时,您可以采取两种选择:

1) 您可以使用更多memory 将您的实例升级到另一个实例

2) 您可以减少在每个请求中处理的数据块,将 XML 文件处理成更小的部分,并让较小的实例继续工作。

Here 是一个类似的帖子,可以提供帮助。

【讨论】:

    【解决方案2】:

    memory usage

    我在 GAE 标准环境中遇到同样的内存增加(内存泄漏?)问题,python3 + flask 在运行多年没有任何问题的项目上。我也尝试了具有更高内存的实例,但这不是解决方案。

    从 requests_futures 库切换到请求并明确设置 entrypoint: gunicorn -b :8080 -w 1 main:app 在其中一个项目中解决了我的问题。

    似乎在python2上不会出现这些问题。

    【讨论】:

    • 其实我们通过切换到kubernetes解决了这个问题。我们真的开始在 Google-App-Engine 中遇到麻烦。与其浪费时间,不如切换到 Kubernetes 更聪明。 @janq
    • 在我的项目中,它只在使用 python 3 时发生。
    • 唯一对我有用的解决方法是在 N 个请求后重新启动 gunicorn worker entrypoint: gunicorn -b :8080 -w 2 --max-requests=500 main:app
    • @sumeyye 我很好奇 kubernetes 是如何解决这个问题的?当然它不允许应用程序随着时间的推移继续使用更多内存?还是您认为它解决了底层应用引擎平台中的内存泄漏问题?
    • @Mark 以为我在回答。很抱歉延迟回复。事实上,我们已经处理了应用引擎问题。作为记忆,我们不应该有问题。在这一点上,我们花了一些时间来遇到这样的错误。目前,我们在 kubernetes 中运行容器,内存比 app-engine 中的内存少。
    【解决方案3】:

    尝试从app.yaml 文件更改instance_class。这将根据分配的类增加内存限制。请参考以下链接: https://cloud.google.com/appengine/docs/standard#instance_classes

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多