2015-12-18 6 views
7

При запуске сервера экспортируется 2GB (приблизительно) данных из mongodb в redis, после чего возникает ошибка как FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory.Как увеличить память nodejs по умолчанию?

Затем запустил сервер с помощью этой команды node --max-old-space-size=4076 server.js и работает нормально. Но нужно настроить в приложении nodejs, чтобы сервер узлов всегда начинался с 4 ГБ памяти. Пожалуйста, помогите мне, как это исправить? Спасибо.

+0

просто из любопытства, есть ли что-то, что мешает вам положить это в сценарии запуска НПМ? –

+0

Привет, Джеймс, я новичок в узлах. не могли бы вы рассказать мне, где именно мне нужно это хранить? можете ли вы предоставить пример кода? Я очень благодарен вам. – anil

+0

Я отправил ответ с более подробной информацией, чем я мог бы представить в комментарии. Надеюсь, это поможет вам. –

ответ

0

узла SomeScript.js --max-старо-пространство размером = 8192

+0

@M T Руководитель: Спасибо – anil

12

один вариант: НПМ запуска сценариев

https://docs.npmjs.com/misc/scripts

Они добавляются к вашему package.json в разделе «Сценарии»

{ 
    //other package.json stuff 

    "scripts":{ 
    "start": "node --max-old-space-size=4076 server.js" 
    } 

} 

затем запустить его называют npm start вместо того, чтобы вводить в node + args + точка выполнения.

Примечание: если вы называете это что-то другое, чем начало, npm run [yourScriptNameHere] будет команда, чтобы запустить его

Это лучший вариант, чем пытаться перенастроить узел использовать 4gb по умолчанию (даже не знаю, если его возможно tbh). Это делает вашу конфигурацию переносимой, используя испеченные методы в том виде, в каком она стоит, и позволяет другим, кто сталкивается с вашим кодом в будущем, понять это.

+0

Есть ли способ изменить его навсегда для всех проектов? –

+0

@InzamamMalik не то, что я знаю, - или мог бы найти быстрый поиск Google. Я считаю, что это тоже по дизайну. Первоначальное сообщение имело прецедент, который мог бы быть решен потоковой передачи данных с одной конечной точки на другую и не буферизации всего этого в памяти. Скорее всего, если вам нужно постоянно переопределять ограничения памяти (или действительно, v8), вероятно, возникнет архитектурная проблема с вашей реализацией. Если вы все еще чувствуете, что вам это нужно для каждого процесса, сценарий запуска действительно не кажется таким неудобным. –

Смежные вопросы