加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django – uWSGI没有释放内存

发布时间:2020-12-20 13:34:20 所属栏目:Python 来源:网络整理
导读:我尝试了一个非常小的 django应用程序,主要用于html静态内容,没有数据库操作.该应用程序在nginx和uwsgi上.我也安装了postgres,但是对于这个问题,我没有做任何数据库操作. 我发现uwsgi进程没有释放内存.在这张来自newrelic的图表中,你会发现uwsgi进程所占用的
我尝试了一个非常小的 django应用程序,主要用于html静态内容,没有数据库操作.该应用程序在nginx和uwsgi上.我也安装了postgres,但是对于这个问题,我没有做任何数据库操作.

我发现uwsgi进程没有释放内存.在这张来自newrelic的图表中,你会发现uwsgi进程所占用的内存仍然停滞在~100MB左右,尽管在这种停滞期间,网站/应用程序一直没有活动.

另外,仅供参考:app / uwsgi进程开始时只耗费56MB.当我用ab(apache基准测试)进行测试并且用-n 1000 -c 10或大约该范围进行测试时,我达到了这个~100MB.

Nginx Conf

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完成的

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读