Windows Server - “Erro de armazenamento insuficiente disponível”

5

Temos dois servidores IIS 7 que são executados no web garden. Há uma cópia de cada site em cada servidor. Os arquivos são sincronizados usando DFS (somente arquivos de origem). Imagens e amp; arquivos grandes estão localizados em diferentes servidores usando compartilhamento.

Pelo menos algumas vezes por semana, recebemos o erro "Not enough storage available" ao ler qualquer arquivo ou ao processar um código do servidor. O IIS Server não consegue mapear o caminho para um disco local (não apenas aquele que sincroniza com o DFS), também parece haver um problema ao carregar permissões de diretiva de grupo (temos vários erros) e não podemos abrir nenhum compartilhamento em nenhum servidor na lan. Também há erros de E / S ao ler arquivos de outros aplicativos personalizados. A velocidade e a latência do disco durante esse período são boas. Se tentarmos copiar um arquivo ou testar a velocidade de uma unidade, geralmente funciona. Às vezes, não podemos nem mesmo executar "meu computador" ou qualquer outro software (por exemplo, monitor de desempenho). Só pode começar se "corrermos como administrador". Há mais do que suficiente armazenamento disponível em todos os discos.

A maioria dos sites deixa de funcionar (mas não todos). Após a reinicialização do servidor, tudo funciona bem por alguns dias e então o problema se repete.

Os servidores são virtualizados usando o VMWARE, há 50 pools do IIS (alguns são mem limited) e cerca de 200 sites em execução em cada servidor. Ambos os servidores têm 16 GB de RAM (apenas cerca de 80% usados). CPU está constantemente entre 30 - 60%.

Nós tentamos alterar a propriedade de registro IRPStackSize para um número maior, mas não houve alterações. Problemas ainda existem. Tentamos desativar o antivírus (NOD) - sem sucesso.

Alguma dica? Talvez estejamos perto dos limites do IIS (para muitos sites / pools)? Talvez 32bit OS e 16GB de RAM? Talvez haja algumas configurações de registro 'secretas' ... Não achamos que o reinício diário seja uma solução de longo prazo.

    
por easwee 06.03.2014 / 10:15

4 respostas

4

O erro Not enough storage available não tem nada a ver com o armazenamento em disco. É sobre a memória interna.

Este erro é muito fácil de reproduzir. Basta selecionar um monte de arquivos grandes (imagens ou DLL's ou qualquer outro), clique com o botão direito do mouse e use a opção open-with para abri-los todos com o Bloco de Notas. Isso deve consumir a memória interna. Quando o arquivo de troca se aproxima da sua capacidade máxima, os serviços aleatórios começarão a registrar Not enough storage available no log de eventos. Muitas vezes eles ficam em estado de falha até serem reiniciados.

Eu me deparei com esse problema com meus próprios serviços e tive que adicionar algum tratamento extra de erro para forçar o processo do serviço a sair quando um erro desse tipo ocorresse em um thread. Dessa forma, o serviço seria reiniciado e recuperado de maneira automatizada.

O IIS geralmente lida com essa situação muito bem (comparado a um serviço médio do Windows).

Para encontrar o processo que causa isso (geralmente um vazamento de memória), você deve usar o monitor de desempenho mmc snap-in e registre o uso de memória dos processos em execução (seja seletivo ao decidir o que gravar, pois esses arquivos de log podem se tornar muito grandes). Outra opção seria usar xperf , o que é realmente mais adequado para depurar drivers de baixo nível e, portanto, também pode ser útil neste cenário.

Se for o serviço w3wc que consome toda a memória, você pode usar uma ferramenta como o novo Insights de aplicativos (ou qualquer outra ferramenta de monitoramento do IIS) para descobrir qual pool de aplicativos, aplicativo da Web ou site é responsável. Em seguida, você pode restringir o uso de memória para esse pool específico ou agendá-lo para reciclar normalmente.

O IIS geralmente pode executar um ciclo de um pool de forma que ninguém perceba (dependendo de como o aplicativo lida com as sessões, se ele for personalizado, você poderá perder sessões quando todas as variáveis estáticas forem liberadas). Muitas vezes, uma solução alternativa como essa é boa o suficiente, e a fixação cara do bug pode ser evitada (disclaimer: esse não é o "meu estilo" de resolver problemas, mas a maioria das partes interessadas adora isso dessa maneira).

    
por 14.03.2014 / 01:05
5

O sistema operacional de 32 bits com 16 GB de ram efetivamente deixará 12 GB sem uso. A atualização para o sistema operacional de 64 bits deve ser considerada definitivamente.

O uso do switch PAE (Physical Address Extender) pode oferecer uma correção temporária.

Para informações com relação à memória máxima que um sistema operacional pode usar junto com o PAE info info:

link

Atenciosamente,

    
por 11.03.2014 / 16:05
1

Poderia ser um vazamento de memória? Possível com esse número de pools do IIS, dependendo do que eles estão fazendo.

Fácil de monitorar com o POOLMON.EXE da Microsoft (pegue-o nas Ferramentas de Suporte oficiais do 2003, ou copie apenas o arquivo do meu próprio espaço aqui: www.dfdfdf.eu/poolmon.exe)

Script do Powershell eu corro de hora em hora pela duração de 'reboot - > acidente '.

$date = get-date -Format ddMMyy-hhmm

.\poolmon.exe -b -n Output-$date.log

#send-mailmessage -smtpserver 10.1.1.11 -to [email protected] -from [email protected] -subject "Poolmon output $date" -attachments "Output-$date.log"

#Extract top offender

$TAG = (Get-Content Output-$date.log)[3]

$Code = $((($TAG -replace '\s+', ' ').split(" "))[1]) 
$Byte = $((($TAG -replace '\s+', ' ').split(" "))[6])

ECHO "$Code,$Byte" >>chart.csv

Chart.CSV mostrará o TAG superior e seu valor alocado por bytes.

O Output-$date.log mostrará tudo para você.

Se você tem um único ofensor no topo, ele fica no topo e aumenta até que você tenha um provável candidato para a causa.

Procure também no Eventvwr no sistema por eventos de SRV mencionar 'recursos insuficientes'

    
por 13.03.2014 / 11:40
0

Primeiro, muitos sites devem ser executados com muitos processos de trabalho do IIS em um sistema operacional de 32 bits. Como mencionado por outros usuários, um sistema operacional de 64 bits definitivamente iria aliviar os problemas de desempenho.

Em segundo lugar, você está recebendo erros relacionados ao armazenamento, mas não forneceu informações sobre o espaço de armazenamento. Você verificou as unidades em todos os servidores para garantir que haja armazenamento adequado? Você verificou suas configurações de memória virtual e verificou a unidade que o arquivo de página está em tem bastante espaço? Em VMWare, como os discos rígidos virtuais são armazenados, localmente ou em armazenamento de rede compartilhado?

Em terceiro lugar, não há informações sobre o sistema operacional, mas sendo que o IIS 7 está em execução, estou assumindo o Server 2008. Você verificou se há service packs e hotfixes disponíveis para os servidores e leu as notas da versão? Pode haver uma correção em um desses.

Eu também recomendaria executar o PerfMon em todos os servidores e procurar longas filas de Disco Físico, uso de CPU,% de uso de Paging File e falhas de página de memória / s. Veja também o seu monitoramento VMWare e veja se há algum problema com os datastores, como alta latência.

Esse problema pode ser causado por várias coisas, incluindo perda de comunicação com armazenamento, arquivos de páginas que ultrapassam os limites da unidade ou várias outras coisas. Se você pudesse postar o texto exato do evento no visualizador de eventos e algumas outras informações de diagnóstico que ajudariam. Sendo que você está tendo problemas com o carregamento de políticas de grupo e outros problemas com aplicativos que não carregam sem passar por alguns aros, eu também não descartaria completamente um sistema operacional corrompido neste momento.

    
por 13.03.2014 / 21:51