当我运行顶部时,我看到(uWSGI使用〜{8} MB的RES
;这是在Docker中):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11 root 20 0 1048736 360688 19064 S 0.3 17.6 1:17.00 uwsgi
12 root 20 0 1018840 328140 18964 S 0.3 16.0 1:42.41 uwsgi
RES表示驻留大小,它准确表示了进程消耗的实际物理内存量。
我想了解使用那么多内存的内容。我试图使用标准的Python堆分析工具,但是他们没有透露任何大的东西。例如,使用pympler
,我看到:
types | # objects | total size
============================ | =========== | ============
dict | 7933 | 9.15 MB
str | 50742 | 8.40 MB
code | 18044 | 2.20 MB
type | 2347 | 2.03 MB
unicode | 3188 | 1.56 MB
tuple | 8012 | 588.46 KB
list | 4425 | 550.81 KB
weakref | 3707 | 318.57 KB
set | 828 | 308.59 KB
builtin_function_or_method | 3432 | 241.31 KB
cell | 3267 | 178.66 KB
function (__init__) | 1417 | 166.05 KB
getset_descriptor | 2337 | 164.32 KB
wrapper_descriptor | 1968 | 153.75 KB
_sre.SRE_Pattern | 290 | 123.77 KB
是否会出现某种堆内存使用情况?也许uwsgi本身就在使用那么多内存?
UDPATED
我当前的uwsgi.ini
档案:
[uwsgi]
strict = true
http = :8000
module = my_service.wsgi
master = true
processes = 2
threads = 2
buffer-size = 10000