Как увеличить память узла по умолчанию для 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 ответа

Решение

Узел SomeScript.js --max-old-space-size=8192

Один из вариантов: запуск сценариев 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
Другие вопросы по тегам