Tenho um cliente executando o SQL Server 2012 Express Edition:
Microsoft SQL Server 2012 - 11.0.2100.60 (X64) 10 de fevereiro de 2012 19:39:15 Copyright (c) Microsoft Corporation Express Edition (64 bits) no Windows NT 6.1 (Build 7601: Service Pack 1)
O servidor é de 64 bits, executando o Windows 7 e possui 8 GB de RAM. O arquivo de paginação está configurado para ser gerenciado pelo sistema operacional.
No outro dia, eles começaram a notar entradas de "condição de memória virtual baixa" no Windows Event Viewer, como as seguintes:
O Windows diagnosticou com êxito uma condição de memória virtual baixa. Os seguintes programas consumiram mais memória virtual: sqlservr.exe (2792) consumiu 28103749632 bytes, svchost.exe (592) consumiu 617349120 bytes e w3wp.exe (7700) consumiu 609824768 bytes.
Eu loguei e dei uma olhada no Windows Resource Monitor e notei que o contador Commit (KB) para o processo sqlservr.exe estava "alto" enquanto o conjunto de trabalho estava relativamente "baixo":
Process Explorer confirmado:
Com base na documentação do Commit (KB):
Esta é a quantidade total de memória física e virtual (arquivo de página) que está confirmada para este processo específico.
Também monitorei o contador de MBytes disponíveis do Perfmon e ele lê consistentemente uma média em torno de 4,624 GB.
select * from sys.dm_os_process_memory
retornou o seguinte:
Por que o sqlservr.exe estaria usando tanta memória "virtual" quando ainda há muita memória "física" disponível? Além disso, pensei que o SQL Server 2012 Express estava limitado a 1 GB de memória - isso é apenas um limite de memória física?
Por outro lado, vários links da Web mencionam que o McAfee Virus Scan Enterprise/McAfee Host Intrusion Prevention pode causar esse tipo de comportamento. Ambos foram instalados neste servidor por seu grupo de TI. Tentei adicionar as exclusões apropriadas, mas nunca vi o Commit (KB) cair. Como posso provar que é um problema da McAfee?
ATUALIZAÇÃO: Encontrei o que parece ser um problema semelhante com o McAfee Host Intrusion Prevention e o SQL Server na mesma caixa.
Esta é uma mensagem geral informando que a condição de memória virtual é baixa.
Podem haver algumas razões para tais mensagens.
De acordo com a mensagem de erro, o SQL Server foi aquele que exigiu uma grande quantidade de memória e foi paginado para o disco, mas esse não é o único componente. Você precisa descobrir por que o SQL Server exigia uma quantidade enorme de memória. Conhecendo a limitação da edição expressa, você deve estar ciente de não executar consultas que consomem muita memória.
Na mensagem de erro, posso ver
w3wp.exe
o que significa que o aplicativo também está sendo executado na mesma máquina; nesse caso, suas janelas bastante possíveis enfrentariam uma condição de pouca memória. Qual é a RAM total presente no sistema? Como você tem vários aplicativos em execução, certifique-se de ter RAM suficiente no sistemaAaron já apontou e vou enfatizar isso, a partir do SQL Server 2012, o mecanismo de banco de dados expresso do SQL Server pode consumir mais de 1G de memória. As informações do BOL não estão atualizadas e ainda dizem
limited to 1 G
que a memória está incorreta. De acordo com este artigo de suporteEDIT: Da saída do DMV
sys.dm_os_process_memory
.Physical_memmory_in_use_KB=
445300 KB, que é445 MB
Esta é a memória física usada pela instância do SQL Server. Esta é a memória apoiada pela RAM física
Virtual_address_space_committed_kb
= 29116348 KB, que é27 G
a memória total do SQL Server utilizada (RAM+Pagefile) pelo SQL Server. Portanto, você pode ver agora que a quantidade de memória do SQL Server atualmente paginada para o disco é 27G -0,4 G. Você precisa descobrir por que e o que fez com que o SQL Server solicitasse tanta memória. Eu sugiro fortemente que você aplique o SP3 o mais rápido possível.Não estou descartando a possibilidade de McAfee não causar o problema, mas com as estatísticas publicadas, parece que o SQL Server está solicitando mais RAM