使用django-eventstream时打开的文件太多

问题描述 投票:0回答:1

我们正在使用django-eventstream向客户发送活动。您可以将我们的工作流程视为芹菜,例如用例,但非常简单。在我们遇到'too many open files'错误(Redhat 7.4)之前,事情一直在顺利进行。我们使用'lsof'跟踪哪些进程正在打开文件,并发现python正在拍摄几个加载所需库(主要是.so文件)的线程。我们使用gunicorn作为我们的服务器,产生uvicorn工人。试图回到'runserver',但面临同样的问题。

在尝试'time'和'chat'的例子时,我们看到了同样的行为。在页面的每次刷新(相同的机器,相同的浏览器,相同的选项卡)上,产生一个新的线程,并且'lsof'在每次刷新页面时列出大约2k文件的增量。

我们尝试在具有相同操作系统的另外两台不同机器上重新创建相同的问题。看到相同的行为,期待1台机器。这是一台带有4GB RAM的笔记本电脑,其余的是带有256GB RAM的服务器。有趣的是,一切都在笔记本电脑中运行得很好,但在服务器中却没有。也许是因为资源的相对稀疏性,操作系统正在关闭笔记本电脑中的文件而不是服务器,这导致'too many open files'错误?

知道如何解决这个问题吗?干杯!

django django-channels
1个回答
0
投票

继续使用线程假设,尝试通过设置ASGI_THREADS来限制线程数。线程数现在有限,因此也是文件数量。如果用户> ASGI_THREADS尝试连接到服务器,我不知道会发生什么。我想现在我需要阅读负载平衡..

© www.soinside.com 2019 - 2024. All rights reserved.