【问题标题】:flask application - 100% memory and cpu consumption烧瓶应用程序 - 100% 的内存和 CPU 消耗
【发布时间】:2020-02-22 07:59:12
【问题描述】:

在我的烧瓶应用程序中,我们观察到非常高的内存和 cpu 消耗几乎 100% 的 CPU 和内存用于 API 调用之一。我们正在使用 flask-rest-json api 包。在我们的模型中,我们有许多表格,例如

表 A - 父级 表 B - A 的子表(表 a id 为 FK) 表 C - B 的子级(表 C id 为 FK)---> 非常高的内存/CPU

除了上表之外,我们还有许多其他相关的表(父子表)。

表 A 就像录制会话,其中包含许多视频(表 B),其中包含许多图像(表 C)。因此,对于 30 分钟的录制会话,我们有 30 个视频片段,然后是 30 * 30 = 900 个图像。

我们使用 db.relationship 在表之间创建了关系,因此我们也可以使用过滤器操作。

一旦我们触发了具有高 cpu/内存使用率的 url,wsgi 进程就会杀死自己然后重新启动。

请让我知道调试此问题。我们怀疑数据库关系存在问题。

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy flask-restless


    【解决方案1】:

    您是否将视频数据作为 BLOB 直接存储在数据库中?别。 如果是这样,只需将视频作为一个单独的文件存储在一个文件夹中,以及数据库中视频的路径即可。

    如果您没有真正说出端点在做什么,那就无能为力了。复杂的关系可能不是您的问题。

    【讨论】:

    • 谢谢。如前所述,图像或视频不是存储为 blob 而是存储为 db 中的 url。我正在使用 nginx 来提供视频或图像文件,这可能不是问题。我在我的模型中使用了多个关系,如下所示。 videoclips = db.relationship('VideoClip', backref='images', lazy='joined') 是否与使用 Joined 参数有关。我已经加入了使用flask-rest-jsonapi包的关系过滤器。
    • 嗯,您可能想研究一些循环查找问题?比如,也许您正在构建一个基于以 catch-22 方式相互交互的关系的查询,这样它们就无法解析,除非它们都得到解决......
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 2012-09-17
    • 1970-01-01
    • 2016-10-27
    • 2014-05-10
    • 2013-03-04
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多