Hoje eu executei meu script para indexação do sistema de arquivos para atualizar o índice de arquivos RAID e após 4h ele travou com o seguinte erro:
[md5:] 241613/241627 97.5%
[md5:] 241614/241627 97.5%
[md5:] 241625/241627 98.1%
Creating missing list... (79570 files missing)
Creating new files list... (241627 new files)
<--- Last few GCs --->
11629672 ms: Mark-sweep 1174.6 (1426.5) -> 1172.4 (1418.3) MB, 659.9 / 0 ms [allocation failure] [GC in old space requested].
11630371 ms: Mark-sweep 1172.4 (1418.3) -> 1172.4 (1411.3) MB, 698.9 / 0 ms [allocation failure] [GC in old space requested].
11631105 ms: Mark-sweep 1172.4 (1411.3) -> 1172.4 (1389.3) MB, 733.5 / 0 ms [last resort gc].
11631778 ms: Mark-sweep 1172.4 (1389.3) -> 1172.4 (1368.3) MB, 673.6 / 0 ms [last resort gc].
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x3d1d329c9e59 <JS Object>
1: SparseJoinWithSeparatorJS(aka SparseJoinWithSeparatorJS) [native array.js:~84] [pc=0x3629ef689ad0] (this=0x3d1d32904189 <undefined>,w=0x2b690ce91071 <JS Array[241627]>,L=241627,M=0x3d1d329b4a11 <JS Function ConvertToString (SharedFunctionInfo 0x3d1d3294ef79)>,N=0x7c953bf4d49 <String[4]\: ,\n >)
2: Join(aka Join) [native array.js:143] [pc=0x3629ef616696] (this=0x3d1d32904189 <undefin...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/usr/bin/node]
2: 0xe2c5fc [/usr/bin/node]
3: v8::Utils::ReportApiFailure(char const*, char const*) [/usr/bin/node]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/bin/node]
5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/bin/node]
6: v8::internal::Runtime_SparseJoinWithSeparator(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/bin/node]
7: 0x3629ef50961b
O servidor está equipado com 16 GB de RAM e 24 GB de SSD. Eu duvido que meu script tenha excedido 36 gb de memória. Pelo menos não deveria
O script cria um índice de arquivos armazenados como Array of Objects com metadados de arquivos (datas de modificação, permissões, etc., sem big data)
Aqui está o código de script completo: http://pastebin.com/mjaD76c3
Eu já experimentei problemas estranhos de nós no passado com este script, o que me forçou, por exemplo. divida o índice em vários arquivos, pois o nó estava com falha ao trabalhar em arquivos grandes como o String. Existe alguma maneira de melhorar o gerenciamento de memória do nodejs com enormes conjuntos de dados?
ng serve
ou distribui o resultado dang build
pasta / dist por outro servidor, como o express? Mas se o seu projeto Angular estiver usando mais do que a memória padrão de 1,7 GB, talvez você tenha um problema de arquitetura em seu aplicativo? Parece que você está usando o env desenvolvimento com NMP começar talvez esta seja uma solução para ele github.com/mgechev/angular-seed/issues/2063Apenas no caso de alguém encontrar isso em um ambiente em que não pode definir diretamente as propriedades do nó (no meu caso, uma ferramenta de construção):
Você pode definir as opções do nó usando uma variável de ambiente se não puder transmiti-las na linha de comandos.
fonte
Se você deseja aumentar o uso de memória do nó globalmente - não apenas um script único, é possível exportar a variável de ambiente, assim:
export NODE_OPTIONS=--max_old_space_size=4096
Então você não precisa jogar com arquivos ao executar builds como
npm run build
.fonte
Eu encontrei esse problema ao tentar depurar com o VSCode, então só queria adicionar isso é como você pode adicionar o argumento à sua configuração de depuração.
Você pode adicioná-lo à
runtimeArgs
propriedade da sua configuração emlaunch.json
.Veja o exemplo abaixo.
fonte
Aqui estão alguns valores de sinalizador para adicionar algumas informações adicionais sobre como permitir mais memória quando você inicia o servidor do nó.
1GB - 8GB
fonte
eu estava lutando com isso mesmo depois de definir --max-old-space-size.
Então percebi a necessidade de colocar opções --max-old-space-size antes do script de karma.
Também é melhor especificar as duas sintaxes --max-old-space-size e --max_old_space_size meu script para karma:
referência https://github.com/angular/angular-cli/issues/1652
fonte
--max-old-space-size=8192 --optimize-for-size --max_old_space_size=8192 --optimize_for_size
e deuEu tive um problema semelhante ao fazer AOT construção angular. Seguir os comandos me ajudou.
Fonte: https://geeklearning.io/angular-aot-webpack-memory-trick/
fonte
sudo npm -g install increase-memory-limit --unsafe-perm
encontrar e consertar um porco da memória com algo como o memwatch pode ajudar.
fonte
%appdata%
press enter%appdata%
> pasta npmng.cmd
no seu editor favorito--max_old_space_size=8192
ao bloco IF e ELSESeu
node.cmd
arquivo fica assim após a alteração:fonte
A seguinte variável de ambiente pode ser usada:
Outra nota:
console.log()
também consome memória no terminal.apenas tentei comentar o console.log () no terminal. porque isso também vai levar memória.
fonte
NODE_OPTIONS= --max-old-space-size=somesize
se você deseja alterar a memória globalmente para o nó (windows), vá para configurações avançadas do sistema -> variáveis de ambiente -> nova variável do usuário
fonte
Eu tentei (o código abaixo e está funcionando bem).
execute o cmd para definir um novo tamanho.
Ou você pode verificar o link para obter mais informações https://github.com/nodejs/node/issues/10137#issuecomment-487255987
fonte
Eu só quero acrescentar que em alguns sistemas, mesmo aumentando o limite de memória do nó
--max-old-space-size
, não é suficiente e há um erro do sistema operacional como este:Nesse caso, provavelmente é porque você atingiu o mmap máximo por processo.
Você pode verificar o max_map_count executando
e aumentá-lo executando
e corrija-o para não ser redefinido após uma reinicialização adicionando esta linha
no
/etc/sysctl.conf
arquivoConfira aqui para mais informações.
Um bom método para analisar o erro é executar o processo com
strace
fonte
Eu enfrentei esse mesmo problema recentemente e me deparei com esse segmento, mas meu problema era com o
React
App. Abaixo, as alterações no comando start do nó resolveram meus problemas.Sintaxe
Exemplo
Por que o tamanho é 16000 no tamanho máximo de espaço antigo?
Basicamente, isso varia depende da memória alocada para esse encadeamento e das configurações do nó.
Como verificar e dar o tamanho certo?
Isso é basicamente ficar no nosso motor
v8
. o código abaixo ajuda a entender o tamanho da pilha do mecanismo do nó local v8.fonte
Acabei de enfrentar o mesmo problema com minha instância EC2 t2.micro, que possui 1 GB de memória.
Resolvi o problema criando um arquivo de troca usando esse URL e defini a seguinte variável de ambiente.
export NODE_OPTIONS=--max_old_space_size=4096
Finalmente, o problema se foi.
Espero que seja útil para o futuro.
fonte
Para o caso de ajudar as pessoas com esse problema ao usar aplicativos nodejs que produzem logs pesados, um colega resolveu esse problema direcionando as saídas padrão para um arquivo.
fonte
Se você está tentando iniciar não
node
ele próprio, mas algum outro software, por exemplo,webpack
você pode usar a variável de ambiente e ocross-env
pacote:fonte
Para empacotamento angular de projeto, adicionei a linha abaixo ao meu arquivo pakage.json na seção scripts .
Agora, para agrupar meu código, eu uso em
npm run build-prod
vez deng build --requiredFlagsHere
espero que isto ajude!
fonte
Atualize o nó para a versão mais recente. Eu estava no nó 6.6 com esse erro e atualizei para 8.9.4 e o problema desapareceu.
fonte
No meu caso, eu corri
npm install
na versão anterior do nó, depois de um dia atualizei a versão do nó e ramnpm install
para alguns módulos. Depois disso, eu estava recebendo esse erro. Para corrigir esse problema, excluí a pasta node_module de cada projeto e executeinpm install
novamente.Espero que isso possa resolver o problema.
Nota: Isso estava acontecendo na minha máquina local e foi corrigido apenas na máquina local.
fonte
Este comando funciona perfeitamente. Como tenho 8 GB de RAM no meu laptop, defino o tamanho = 8192. É tudo sobre ram e você também precisa definir o nome do arquivo. Eu executo o comando npm run build , por isso usei o build.js .
fonte
No meu caso, atualizei a versão do node.js. para a mais recente e funcionou como um encanto.
fonte