【问题标题】:Profiling memory usage on App Engine在 App Engine 上分析内存使用情况
【发布时间】:2015-08-24 20:45:38
【问题描述】:

如何分析我的 App Engine 应用的内存 (RAM) 使用情况?我正在尝试解决与超出实例内存限制相关的错误。我已经尝试过这些东西,但到目前为止,它们不起作用或不能提供我需要的东西。

  • 应用统计。这不提供内存使用详情。
  • Apptrace。它自 2012 年以来没有更新,并且依赖于 SDK 的已弃用版本。不能开箱即用。
  • Appengine-profiler。不提供内存统计信息。
  • Gae-mini-profiler,它使用cProfile。不提供内存统计信息。
  • guppy。在我的应用程序文件夹中下载并安装库的代码后,运行guppy.hpy() 失败并显示ImportError: No module named heapyc
  • resource。不是 SDK 版本的 python 的一部分,所以我不能使用它。

我对以上任何一项有误吗? this 问题上评价最高的答案(不是公认的答案)表示无法监控 App Engine 上的内存使用情况。那不可能是真的。可以吗?

编辑

我可以确认 GAE 迷你分析器可以完成这项工作。安装后,我可以将 UI 中的设置更改为“内存采样”,然后看到以下读数:

感谢所有contributors!

【问题讨论】:

  • 是的,无法详细分析,但您可以从运行时 API 获取当前内存使用情况。
  • 仅供参考,上次我与支持团队讨论过这个问题,他们建议使用托管虚拟机并安装 guppy(您不能在常规 appengine 环境中安装它)

标签: python google-app-engine memory


【解决方案1】:

如果您使用采样分析器并将memory_sample_rate 设置为非零值,GAE Mini Profiler 会提供内存统计信息;在每个快照中,它都会告诉您正在使用的内存。您需要将采样频率调低,因为内存采样需要几毫秒才能执行。

编辑:它获取内存统计信息的方式来自 GAE runtime API,它已被弃用,但我知道的最后一次仍然有效;我不确定是否有好的替代品。

【讨论】:

    【解决方案2】:

    要添加到 Ben's answer,截至 2015 年 11 月 16 日,尽管已弃用,Google App Engine runtime API 仍然有效。谷歌还没有正式的替代品。

    from google.appengine.api.runtime import runtime
    import logging
    
    logging.info(runtime.memory_usage())
    

    这将输出内存使用统计信息,其中数字以 MB 表示。例如:

    current: 464.0859375
    average1m: 464
    average10m: 379.575
    

    【讨论】:

    • 在 python 3.7 env 中有什么替代方法?
    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2011-03-26
    • 2011-06-09
    相关资源
    最近更新 更多