O .NET Runtime Optimization Service ( mscorsvw
) continua consumindo toda a memória da minha estação de trabalho desde que instalei o SQL Server 2012 Service Pack 1.
Consome cerca de 1,6 GB de memória antes de esgotar toda a memória disponível:
Posso interromper o processo, mas isso acontece novamente quando reinicio o computador ou espero o tempo suficiente.
A Techdows sugere o uso do .NET Native Image Generator ( ngen
) para resolver o problema.
Eu abri um prompt de comando e executei comandos como este:
cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319.1
ngen executeQueuedItems
O consumo de memória mscorsvw
caiu para cerca de 20-30 MB e ngen
consumiu toda a memória restante.
ngen
gerado apenas mensagens de erro até que eu matei o processo. As primeiras linhas de saída ficaram assim:
Microsoft (R) CLR Native Image Generator - Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Failed to load dependency Microsoft.DataWarehouse of assembly
Microsoft.SqlServer.MaintenancePlanTasks, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The system
cannot find the file specified. (Exception from HRESULT: 0x80070002)
Failed to load dependency Microsoft.VisualStudio.DataTools.Interop of assembly
Microsoft.DataWarehouse, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The system
cannot find the file specified. (Exception from HRESULT: 0x80070002)
Failed to load dependency Microsoft.Data.ConnectionUI of assembly
Microsoft.DataWarehouse, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The located
assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)
Todas as mensagens dizem que o sistema não pôde localizar um assembly ou que uma definição de manifesto não corresponde a uma referência.
Como solução alternativa, desabilitei os Serviços do Windows clr_optimization_v4.0.30319_32
e clr_optimization_v4.0.30319_64
.
Isso oculta o problema em vez de resolvê-lo e impede que todos os assemblies .NET sejam otimizados.
O que mais posso tentar para resolver este problema?
Esse problema é descrito no Connect (consulte os processos msiexec.exe continuam em execução após a instalação do SQL Server 2012 SP1 ) e um hotfix está disponível em KB2793634 . Existem soluções alternativas listadas na postagem do Connect e neste blog se você não conseguir instalar o hotfix imediatamente.
Eu escolhi configurar 2 scripts. O 1º script é executado diariamente à 1h e definido para terminar após 1 hora de execução
O segundo script é executado diariamente às 3h (e sempre que o computador é reiniciado):
Dessa forma, ainda consigo trabalhos de otimização de compilação (executados apenas fora do horário de pico), mas o processo
mscorsvw
/msiexec
é domesticado.