【问题标题】:Why is flask using all of my memory?为什么烧瓶会占用我所有的内存?
【发布时间】:2018-01-29 16:45:14
【问题描述】:

我创建了我能想象到的最简单的 Flask 应用:

import flask
from flask import Flask

application = Flask(__name__)

@application.route('/')
def index():
    return flask.jsonify(ok=True)

我于 1 月 26 日将此应用程序部署到 Elastic Beanstalk。自部署以来,它已经处理了 0 个请求。这是使用Amazon's memory monitoring scripts的内存使用图:

您可以看到(我假设)垃圾收集发生在 1/29 的小幅下降。但是到底是什么分配了这么多内存呢?如果这是正常的,我应该如何监控内存以便我可以真正确定我的(真实)应用程序是否存在内存泄漏?这是 Flask 的错,Python 的错,AWS 的错,……还有别的吗?

编辑添加: 我今天下午改用 mod_wsgi,但它似乎没有任何效果。更新的图表(dip 正在部署新版本,需要尝试几次才能正确配置):

free -m的输出:

             total       used       free     shared    buffers     cached
Mem:           532        501         31          0         81         37
-/+ buffers/cache:        381        150
Swap:            0          0          0

【问题讨论】:

    标签: python amazon-web-services flask


    【解决方案1】:

    该内存是实际使用的还是缓存的? SSH 进入您的 beanstalk 实例并使用free 命令来确定这一点。 This article 很好地细分了如何确定您的 RAM 是实际使用还是缓存以及这意味着什么。

    【讨论】:

    • 很遗憾,Elastic Beanstalk 上的free 没有available 列! (我猜它太旧了?)但是,听起来buffers/cache 行的free 列是一个合理的代理,并且稳定在~145MB。
    • 我将free 的输出添加到我的问题底部。
    • 酷,所以是的,-/+ buffers/cache 的行显示了正在使用的实际内存。其余的被保存在缓存中,并将由操作系统根据其他程序的需要释放。
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    相关资源
    最近更新 更多