【发布时间】:2021-12-03 20:19:22
【问题描述】:
我编写了一个 python Dash 应用程序,并使用 OpenShift 在我的组织中提供了它。我对 OpenShift 不是很了解,但它似乎运行正常,包括涉及多个用户时。
我的问题是内存管理。 当我在 OpenShift 上查看时,每次用户启动新会话时,Dash 应用程序使用的内存都会增加约 200MB。当用户关闭浏览器选项卡时,消耗的内存不会减少(即使是几周后)。从本质上讲,Dash 应用程序消耗的内存量一直在增长。
我可能遗漏了一些东西,但是如何在用户关闭浏览器选项卡后或自上次操作后经过一段时间后让 Dash 清除内存?我代码中的 dcc.Store 对象具有“storage_type = ‘memory’”。但据我了解,dcc.Store 将所有存储在客户端的数据保存在浏览器中,因此这不应该增加服务器上的内存。
我部署了我的应用程序
app.run_server(debug=True, dev_tools_hot_reload=False, port=8080, host=“0.0.0.0”)
万一这很重要。
【问题讨论】:
-
用户结束会话后内存最终会下降吗?我猜要么正在发生一些缓存,要么会话没有在远程端终止,要么存在内存泄漏。
-
内存似乎永远不会下降。这不能是我的 dcc.Store() 对象吗?那应该是客户端浏览器中的内存,而不是服务器上的内存?此外,Dash 何时/如何意识到用户终止了会话?如果用户关闭选项卡?会话的结束是否应该触发某种清理功能来删除与之相关的任何内存?
-
该错误很可能与您的实施有关。请发布一个演示该问题的 MWE(代码)。
-
不幸的是,我为我的公司编写了此代码,我必须共享专有输入数据才能让您对其进行测试。它也有几千行长,因此很难确定这个问题的根源,因此很难制作 MWE。为了追踪这个问题,我可以在这里检查任何明显的东西吗?我只是在使用我认为的标准回调。或者,我是否可以更改 Python 脚本,使其每周重新启动以清除内存?
标签: python openshift plotly-dash