Этот вопрос проверяет понимание оценки потребления памяти и capacity planning.
Память оценивают исходя из размера одного объекта обработки и числа одновременно обрабатываемых сообщений. Нужно учитывать буферы, кэш, очереди и накладные расходы Python. Для оценки используют профилирование и нагрузочные тесты. Обычно добавляют запас 20–50%
Оценка памяти строится на определении memory footprint одного сообщения и количества одновременно обрабатываемых данных.
Память ≈ размер данных × количество одновременно обрабатываемых сообщений
Пример:
сообщение ~50 KB
одновременно обрабатывается 500 сообщений
Память только под данные:
50 KB × 500 ≈ 25 MB
Но реальное значение выше из-за накладных расходов.
Дополнительно память расходуют:
объекты Python
строки и словари
буферы сериализации
стек корутин
Полезные инструменты:
tracemalloc
memory_profiler
objgraph
Пример:
import tracemalloc
tracemalloc.start()
# выполнение нагрузки
print(tracemalloc.get_traced_memory())
Типичная схема:
замер памяти при N сообщениях
масштабирование оценки
добавление запаса
Вывод
Память лучше оценивать экспериментально: сначала расчет, затем нагрузочный тест и корректировка.