Техническое задание: Ревью и оптимизация кода Node.js
Имеется рабочее приложение на Node.js, в процессе работы возникает критическая ошибка, приводящая к остановке:
Worker terminated due to reaching memory limit: JS heap out of memory
Цель работы
Провести анализ кода, выявить источник утечки памяти (memory leak) и выполнить рефакторинг для стабильной работы приложения.
Основные задачи
- Провести детальный ревью существующего кода.
- Используя профилировщик (например, Chrome DevTools, node --inspect), найти участки кода или паттерны, приводящие к неконтролируемому росту потребления памяти.
- Устранить обнаруженные проблемы. Типичные причины могут включать:
- Некорректное управление замыканиями (closures).
- Накопление данных в глобальных переменных или кэшах без очистки.
- Утечки в обработчиках событий (Event Listeners).
- Проблемы с потоками (Worker Threads) или асинхронными операциями.
- Некорректная работа с большими объемами данных (стримы, буферы).
- Обеспечить, чтобы после оптимизации приложение работало стабильно в долгосрочном режиме (long-running process).
- Предоставить краткий отчет о проделанных изменениях и причинах утечки.
Требования к исполнителю
- Опыт работы с Node.js и глубокое понимание его event-loop и модели памяти.
- Практический опыт диагностики и устранения утечек памяти в Node.js.
- Умение работать с инструментами профилирования.
Результат работы
- Оптимизированный, чистый код без утечек памяти.
- Краткое описание выявленной проблемы и способа её решения.