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框架通常将其代码加载到内存中.这通常不是问题,但是对工人的总内存消耗设置上限并不是一个坏主意,因为在几个请求的过程中,个体工作者的内存消耗可能会增长.
当工作人员达到或超过上限时,一旦提供请求,它将自动重新启动.这是通过 您要将其设置为取决于服务器上可用的内存以及您正在运行的工作器数量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |