Бот на питоне потребляет все больше памяти. БД SQLite3 размером примерно 350-400 МБ. В течение недели выделение памяти под него может дойти до 200-250 МБ и больше. Бот развернут на сервере под Линукс (Дебиан 11), в котором я вообще не разбираюсь, памяти в системе всего 1 ГБ, так что многовато забирает одна не самая сложная задача. Это примерно выглядит так:
Хотел бы выяснить причину такого жора памяти, но не могу понять, с чего начать?
Как использовать tracemalloc? В частности, как заставить его вывести изменения потребления памяти только для модулей моего проекта, а не для всех подряд модулей питона? Догадываюсь, что для этого нужно задать параметры для фильтров
snapshot.filter_traces, как в коде ниже, но как внести в них список своих файлов?
Кодdef display_top(snapshot, key_type='lineno', limit=10):
S = ''
snapshot = snapshot.filter_traces((
tracemalloc.Filter(False, "<frozen importlib._bootstrap>"),
tracemalloc.Filter(False, "<unknown>"),
))
top_stats = snapshot.statistics(key_type)
S = f'Top {limit}'
for index, stat in enumerate(top_stats[:limit], 1):
frame = stat.traceback[0]
size = round(stat.size / 1024, 2)
S = f'{S}\r\n{index}: {frame.filename}: line {frame.lineno}, size: {size} KiB'
line = linecache.getline(frame.filename, frame.lineno).strip()
if line:
S = f'{S}\r\n {line}'
other = top_stats[limit:]
if other:
size = round(sum(stat.size for stat in other) / 1024, 2)
count = len(other)
S = f'{S}\r\n{count} other: {size} KiB'
total = round(sum(stat.size for stat in top_stats) / 1024, 2)
S = f'{S}\r\nTotal allocated size: {total} KiB'
return S
Или, может быть, что-то нужно сделать с Линукс, чтобы снизить расход памяти? Спасибо заранее.
Прошу сделать скидку на то, что я не профессионал.