Отслеживание использования памяти Python / uWSGI
Когда я запускаю top, я вижу (uWSGI использует ~860MB RES
; это в докере)
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