Как увеличить память узла по умолчанию для nodejs?
При запуске сервера экспортирует 2 ГБ (приблизительно) данных из mongodb в redis, а затем получает ошибку FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
,
Затем запустил сервер с этой командой node --max-old-space-size=4076 server.js
и работает отлично. Но необходимо настроить в приложении nodejs так, чтобы сервер узла всегда запускался с 4 ГБ памяти. Пожалуйста, помогите мне, как это исправить? Благодарю.
2 ответа
Один из вариантов: запуск сценариев npm
https://docs.npmjs.com/misc/scripts
Они добавляются в ваш package.json в разделе "скрипты"
{
//other package.json stuff
"scripts":{
"start": "node --max-old-space-size=4076 server.js"
}
}
затем запустить это вызов npm start
вместо ввода в узел + аргументы + точка выполнения.
Примечание: если вы называете что-то другое, чем начало, npm run [yourScriptNameHere]
будет команда, чтобы запустить его
Это лучший вариант, чем пытаться перенастроить узел для использования 4 ГБ по умолчанию (даже не знаю, возможно ли это tbh). Это делает вашу конфигурацию переносимой, используя методы baked in, как она есть, и позволяет другим, кто столкнется с вашим кодом в будущем, понять, что это необходимо.
Вы также можете установить NODE_OPTIONS
при запуске сценария npm, а не node
сам:
"scripts": {
"start": "NODE_OPTIONS=--max-old-space-size=4096 serve",
},
Есть два способа решить эту проблему. Первый способ - явно указать размер памяти для вашего приложения, как уже было сказано выше. И другой способ - установить глобальный размер памяти для узла - это делается путем создания переменной среды с
variable name=NODE_OPTIONS
а также
variable value=--max-old-space-size=4096