TECNOLOGIA - Rotinas Diversas - Espaço insuficiente de armazenamento para processar este comando/operação - Not enough storage is available to process this command/operation
Incidente
Durante execução de diversos processos do sistema, seja em estações de trabalho, Servidores de Acesso (WTS, RDWeb, Citrix) ou rotinas que rodam no Senior Middleware (como é o caso de Processos Agendados, WebServices, Browser Access, Windows Access, execuções assíncronas e síncronas atendidas pelo Senior Middleware), ocorrem mensagens de erro em telas/processos do sistema, conforme descritas abaixo:
- Espaço insuficiente de armazenamento para processar este comando;
- Espaço insuficiente de armazenamento para processar essa operação;
- Not enough storage is available to process this command;
- Not enough storage is available to complete this operation;
- Not enough memory resources are available to process this command
Essas mensagens descritas acima são mensagens padrões de um ambiente Microsoft Windows. No entanto, por conta da mesma causa deste incidente, algumas vezes a mensagem original é sobrescrita por uma mensagem dos sistemas da Senior, pois o sistema não consegue lidar com erros em APIs do Windows em rotinas de baixo nível. São exemplos de mensagens que podem ocorrer nos sistemas Senior:
- Out of Memory (OutOfMemory);
- Access Violation;
- Erros no carregamento de BPLs como, por exemplo: Não foi possível carregar a biblioteca "XXXXX". (Can't load package XXXXXX). Not enough storage is available to process this command;
- Esta Ação gerou um número excessivo de erros. Tente Novamente.
Importante
- A característica que marca este incidente é o fato dele se manifestar de forma aleatória em várias partes da operação do sistema;
- As mensagens relacionadas ao sistema Senior descritas acima podem ser sintomas do incidente reportado nesse artigo, mas não necessariamente ocorrem apenas por conta desse incidente (ou seja, essas mensagens podem ter outras causas, inclusive essa descrita neste artigo - por isso a importância de validar as informações presentes neste artigo quando esse tipo de situação ocorre);
- A avaliação das informações deste artigo podem auxiliar no tempo de diagnóstico de situações relacionadas as mensagens expressadas aqui.
Causa
A mensagem “Espaço insuficiente de armazenamento para processar este comando” (ou “Not enough storage is available to process this command”) aparece em aplicações no Windows quando acontece um problema chamado de “esgotamento de heap da área de trabalho” (ou “desktop heap exhaustion”).
Esta situação acontece quando a termina a memória reservada para objetos dos Windows (janelas, menus, arquivos, threads....) alocados pelas aplicações rodando em uma máquina.
Solução
Atenção
- As orientações descritas neste artigo exigem conhecimento avançado em ambiente de Sistema Operacional Microsoft Windows. Procure a área de TI da sua empresa para verificação e execução de ações descritas neste artigo. Caso sua empresa não tenha um profissional de TI Especialista Microsoft com estes conhecimentos, você poderá contratar da Senior um Consultor de Infraestrutura com este conhecimento;
- Você pode precisar realizar as verificações/alterações descritas neste artigo em diversos Servidores (Servidores de Aplicação, Servidores de Acesso Remoto/WTS, Servidores de Middleware), conforme a Infraestrutura de Servidores existentes na sua empresa;
- Caso você possua sistema Senior em ambiente Cloud Senior, você poderá registrar um ticket para IT Services solicitando as verificações aqui descritas.
Importante
- Você poderá encontrar informações sobre essa questão em alguns artigos na internet, inclusive no site da Microsoft. Seguem alguns links de referência (os links podem ser desativados sem aviso prévio - eles não são disponibilizados pela Senior):
- https://dbmentors.blogspot.com/2011/09/desktop-heap-overview.html
- https://learn.microsoft.com/pt-br/troubleshoot/windows/win32/user32-kernel32-not-initialize
- http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b126962 (este link está inacessível, mas foi mantido aqui para efeito de referência do link que a Microsoft mantinha sobre o assunto, caso você precise acionar a Microsoft para maiores informações)
- http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b184802 (este link está inacessível, mas foi mantido aqui para efeito de referência do link que a Microsoft mantinha sobre o assunto, caso você precise acionar a Microsoft para maiores informações);
- Verifique também as informações presentes na Documentação da nossa Tecnologia sobre o assunto. Para isso, clique aqui para acessar o Portal da Documentação da Senior e pesquisa pelo termo Limite de aplicações Middleware.
Agora com relação as alterações que precisam ser validadas no ambiente, segue abaixo:
1. Acesse o Editor de Registro do Windows (regedit.exe);
2. Navegue até a chave \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\
3. Acesse o atributo de nome Windows:
4. Efetue o ajuste no valor, conforme descrito abaixo:
4.1. O valor desse atributo é apresentado conforme exemplo abaixo:
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16
Atenção
As informações descritas acima são um exemplo do parâmetro presente no Regedit. Você não deve copiar ou tomar como base para a parametrização no seu ambiente. Você deve Consultar o especialista Microsoft do seu ambiente para validar/configurar adequadamente esse parâmetro.
4.2. A propriedade que você precisa validar/alterar é a propriedade de "SharedSection" (conforme destacado acima em negrito). Esse valor é formado por três números. Você precisa verificar o terceiro número (que no exemplo acima está definido como 768).
Altere o valor conforme definição do profissional especialista Microsoft que está atuando nesta demanda com você.
Se necessário copie e cole as informações em um Bloco de Notas para facilitar a alteração apenas da parte correta.
Importante
- A alteração incorreta deste parâmetro poderá afetar desempenho do Servidores. Em caso de dúvidas, consulte o Especialista Microsoft da sua empresa;
- Geralmente alterações são realizadas aumentando o valor do parâmetro e acompanhando o ambiente (após o reinicio dos Servidores), validando a necessidade de aumentar novamente o parâmetro, conforme recursos disponibilizados pelo Servidor.
4.3. Após a alteração, os Servidores que tiveram essa alteração deverão ser reiniciados para efetivar as alterações.
Observação
Com relação aos valores do parâmetro SharedSection citados acima, você encontrará maiores informações no Portal da Microsoft (clique aqui para acessar link). Abaixo seguem informações extraídas diretamente deste link:
- O primeiro SharedSection valor (1024) é o tamanho de heap compartilhado comum a todas as áreas de trabalho. Isso inclui a tabela de identificador global. Esta tabela contém identificadores para janelas, menus, ícones, cursores e assim por diante e configurações compartilhadas do sistema. É improvável que você tenha que alterar esse valor;
- O segundo SharedSection valor é o tamanho do heap da área de trabalho para cada área de trabalho associada à estação de janela interativa WinSta0. Objetos de usuário, como ganchos, menus, cadeias de caracteres e janelas, consomem memória neste heap da área de trabalho. É improvável que você tenha que alterar esse valor;
- O terceiro valor sharedSection é o tamanho do heap da área de trabalho para cada área de trabalho associada a uma estação de janela não interativa. Se esse valor não estiver presente, o tamanho do heap da área de trabalho para estações de janela não interativas será igual ao tamanho especificado para estações de janela interativas (ou seja, o segundo valor sharedSection).
Lembre-se de que é o Terceiro valor que você deve verificar/alterar e que, caso você tenha dúvidas sobre essas alterações, você deverá contatar o Especialista Microsoft da sua empresa e, caso ainda hajam dúvidas sobre isso, procure o suporte da Microsoft.
Atenção! Antes de realizar qualquer alteração, analise o impacto que poderá ter em outros lançamentos/processos do sistema.