我发现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 scriptproject = myappbase_dir = /var/www/mywebsite.comapp=relocuID = www-datagID = www-data; process name for easy IDentification in topprocname = %(project)no-orphans = truevacuum = truemaster = trueharakiri = 30processes = 2processes = 2pythonpath = %(base_dir)/pythonpath = %(base_dir)/srcpythonpath = %(base_dir)/src/%(project)logto = /var/www/logs/uwsgi.logchdir = %(base_dir)/src/%(project)module = reloc.wsgi:applicationsocket = /var/www/mywebsite.com/django.sockchmod-socket = 666chown-socket = www-data
更新1:所以看起来,它不是uwsgi,而是保留某些数据结构以便加快处理的python进程.
解决方法 Web框架通常将其代码加载到内存中.这通常不是问题,但是对工人的总内存消耗设置上限并不是一个坏主意,因为在几个请求的过程中,个体工作者的内存消耗可能会增长.当工作人员达到或超过上限时,一旦提供请求,它将自动重新启动.这是通过reload_on_rss
flag完成的
您要将其设置为取决于服务器上可用的内存以及您正在运行的工作器数量.
总结以上是内存溢出为你收集整理的django – uWSGI没有释放内存全部内容,希望文章能够帮你解决django – uWSGI没有释放内存所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)