gpt4 book ai didi

django - uWSGI不释放内存

转载 作者:行者123 更新时间:2023-12-02 06:24:15 24 4
gpt4 key购买 nike

我尝试了一个非常小的 django 应用程序,该应用程序主要提供 html+静态内容,没有数据库操作。该应用程序位于 nginx 和 uwsgi 上。我也安装了postgres,但是对于这个问题,我没有做任何DB操作。

我发现 uwsgi 进程没有释放内存。在 newrelic 的这张图表中,您会发现 uwsgi 进程占用的内存仍然停滞在 ~100MB ,尽管在停滞期间网站/应用程序绝对没有任何事件。

另供引用:app/uwsgi 进程启动时仅消耗 56MB。当我使用 ab(apache 基准测试)进行测试并使用 -n 1000 -c 10 或在该范围内达到该值时,我达到了约 100MB。

enter image description here

Nginx session

server 
{
listen 80;
server_name <ip_address>;

root /var/www/mywebsite.com/;
access_log /var/www/logs/nginx_access.log;
error_log /var/www/logs/nginx_error.log;

charset utf-8;
default_type application/octet-stream;
tcp_nodelay off;
gzip on;

location /static/
{
alias /var/www/mywebsite.com/static/;
expires 30d;
access_log off;
}

location /
{
include uwsgi_params;
uwsgi_pass unix:/var/www/mywebsite.com/django.sock;
}
}

app_uwsgi.ini

[uwsgi]
plugins = python

; define variables to use in this script
project = myapp
base_dir = /var/www/mywebsite.com
app=reloc
uid = www-data
gid = www-data

; process name for easy identification in top
procname = %(project)

no-orphans = true
vacuum = true
master = true
harakiri = 30
processes = 2

processes = 2
pythonpath = %(base_dir)/
pythonpath = %(base_dir)/src
pythonpath = %(base_dir)/src/%(project)

logto = /var/www/logs/uwsgi.log
chdir = %(base_dir)/src/%(project)
module = reloc.wsgi:application

socket = /var/www/mywebsite.com/django.sock
chmod-socket = 666
chown-socket = www-data

更新1:所以看起来,它不是uwsgi,而是保留某些数据结构以加快处理速度的Python进程。

最佳答案

Web 框架将其代码加载到内存中是很常见的。这通常不是一个问题,但对工作线程的总内存消耗设置上限并不是一个坏主意,因为在多个请求的过程中,单个工作线程的内存消耗可能会增加。

当工作线程达到或超过上限时,一旦请求得到处理,它将自行重新启动。这是通过 reload_on_rss flag 完成的

您想要将其设置为取决于服务器上的可用内存以及您正在运行的工作线程数量。

关于django - uWSGI不释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16332075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com