Причина, по которой мы добавили этот флаг, заключалась в том, что собственный OOM-киллер Node убивал сборку — 500 МБ было недостаточно. Готов попробовать настроить его на 1,5 ГБ — я только что проверил это на своём дроплете, и всё работает нормально. На самом деле, похоже, что даже 1,0 ГБ достаточно.
Я попытался отслеживать использование памяти с разными значениями max_heap:
(while(true); do (free -m -t | grep Total | awk '{print $3}') && sleep 0.5; done) | tee 1000mb.csv
Это показывает использование памяти во время сборки:
Разница во времени сборки была незначительной, но лимиты 1 ГБ и 1,5 ГБ явно приводят к меньшему общему использованию. Как и ожидалось, вывод команды time показывает значительно меньше «крупных ошибок страниц» при более низком лимите для Node.
Любопытно, что разница между 1,5 ГБ и 1 ГБ так мала… ![]()
В любом случае, я согласен, что снижение лимита — хорошая идея. Чтобы убедиться, что это не повлияет на производительность сборки на машинах с более высокими характеристиками, я думаю, мы должны переопределять лимит только тогда, когда знаем, что он слишком низкий. В противном случае мы можем позволить Node использовать значение по умолчанию.
Вот PR — мы постараемся как можно скорее его объединить. Спасибо, что подняли этот вопрос @Ed_S!
