首页 > 解决方案 > uwsgi内存消耗逐渐增加,但消耗的内存没有释放

问题描述

我正在使用 django + nginx + uwsgi 运行一个项目,我的 uwsgi.ini 文件配置如下:

socket = /tmp/uwsgi.sock
chmod-socket = 666
socket-timeout = 60
enable-threads  = true
threads = 500
disable-logging=True

使用上述配置还添加了 harakiri = 60 但无法释放内存然后尝试添加 max-request = 100 和 max-worker-lifetime = 30 但在尝试配置进程 = 4 和线程 = 2 后未释放内存但也无法释放内存使用。在分析我的 api 调用时,我发现了三个批量 api,它们不断增加内存使用并优化了代码。即使在代码优化并向 uwsgi.ini 文件添加一些参数后,仍无法释放内存。请帮我解决这个问题。

标签: pythondjangonginxuwsgi

解决方案


我在使用 Django + Uwsgi 应用程序时遇到了类似的问题,这是我的 uwsgi.ini 配置:

[uwsgi]

enable-threads  = true
threads = 100
harakiri = 30
max-request = 50
  • 使用多个线程来增加并发性(我使用线程是因为它们比运行多个进程更便宜)。
  • Harakiri - 如果请求花费的时间超过指定的时间(以秒为单位),则请求将被丢弃并回收该工作人员。
  • max-request - 这是重要的参数,将限制进程处理的请求

完成这些之后,找出哪个请求会导致来自数据库的大量数据查询结果,并在可能的情况下对其进行优化。

让我知道这是否可行:),还有更多信息将有助于找出更好的解决方案。


推荐阅读