Импорт каталога JSON-телом на 80 МБ подвешивает сервис на несколько секунд
Чтобы принимать выгрузки каталога, в Express выставили express.json({ limit: '200mb' }). Когда партнёр отправляет файл на 80 МБ, сервис несколько секунд не отвечает никому, а память подскакивает на гигабайт.
Как правильно устроить приём таких данных?
- Держать небольшой лимит тела, а крупные импорты принимать файлом и разбирать потоком
- Увеличить лимит до 500 МБ, чтобы запас был больше
- Вызывать JSON.parse внутри setTimeout, чтобы не блокировать запросы
- Сжимать тело запроса gzip, тогда разбор будет быстрым
