Django

Uwsgi内存占用过多

2020-03-12  本文已影响0人  DjangoUnchained

问题发现

项目在Linux上运行时间过长的时候,客户端的请求就会部分出现 502 的返回。
登录服务器之后发现,系统可用内存仅剩200M不到,因此猜测是内存不够导致。

image.png

初步解决

刚开始并没有想到是Uwsgi占用的内存过多,而是觉得buff/cache占用过多


image.png

因此尝试了手动清缓存。

sysctl -w vm.drop_caches=1

根源解决

后来了解到了Uwsgi的有关内存的配置项,如下:

limit-as = 1024                      ; 默认512,限制uwsgi进程占用虚拟内存的最大值,超过则会报错
reload-on-as = 1024                  ; 在达到1024的时候重启进程
reload-on-rss = 1024                ;
evil-reload-on-as = 512              ;
evil-reload-on-rss = 512             ;
max-requests = 1000                  ; Restart workers after this many requests
max-worker-lifetime = 3600           ; Restart workers after this many seconds
reload-on-rss = 1024                 ; Restart workers after this much resident memory
worker-reload-mercy = 60             ; How long to wait before forcefully killing workers

根据自己的服务器硬件配置,适当配置这几个选项即可

最终结果

image.png

其他

另外附上一篇很优秀的关于uwsgi各项配置的文章
https://www.techatbloomberg.com/blog/configuring-uwsgi-production-deployment/

上一篇 下一篇

猜你喜欢

热点阅读