O monitor observa o uso de memória pelos processos não Analysis Services no servidor para garantir que o Limite de Memória Total para o Analysis Services esteja sempre disponível.
O uso de memória no servidor hospedando a instância do SSAS pode impactar a integridade e o desempenho do servidor competindo por recursos compartilhados nos quais a instância também deve realizar alocações. Isso pode levar ao esgotamento da memória física disponível no computador, que pode forçar o sistema operacional a mapear memória virtual para o arquivo de paginação no disco, solicitações de tamanho menor do que a memória física. Para qualquer aplicativo de negócios crítico que depende de uma instância do SSAS, o servidor deve ser configurado para que outros processos (por exemplo, antivírus, desfragmentação de disco, outras instâncias do SSAS ou o mecanismo do banco de dados relacional do SQL Server etc.) não aloque memória excessiva, levando a essa circunstância.
Os processos mais comuns para competir significativamente com instâncias do SSAS para memória incluem principalmente outras instâncias do SSAS, o mecanismo do banco de dados relacional do SQL Server ou outros servidores de banco de dados, porque eles tendem a consumir mais intensamente a memória hospedada em servidores em que o SSAS também está hospedado. Algumas vezes, software que não é do banco de dados também pode consumir muita memória. Sendo assim, as considerações de memória podem frequentemente impactar a configuração de um servidor.
Além disso, o valor da memória não reservada (parâmetro FreeUnreservedPercent) pode se tornar negativo. Esse parâmetro é calculado conforme descrito a seguir: 100% da memória total menos o uso de memória alta pela instância (SSAS) e menos o uso de memória por outros processos. Os motivos podem ser:
O parâmetro Limite de Memória Total está definido incorretamente no arquivo de configuração
Memória total usada por outros processos e o limite predefinido para SSAS excede 100%
O Gerenciador de Tarefas pode ser usado para examinar o uso da memória por vários processos no servidor. Na guia Processos no Windows Server 2008 R2 e na guia Detalhes no Windows Server 2008, a pessoa pode classificar pela coluna Memória para encontrar os processos consumindo mais memória no sistema. Se as instâncias do SSAS (msmdsrv.exe) ou do mecanismo de banco de dados relacional do SQL Server (sqlservr.exe) consumirem memória excessiva, isso será uma maneira simples para identificar rapidamente o seu uso e, claro, também será possível ver se outros processos do sistema estão contribuindo para essa condição. Subsequentemente, ações corretivas (como ajustar o uso de memória das instâncias pelo administrador do SQL, adicionar hardware ou reduzir/dividir a carga de trabalho no computador) podem ser planejadas de acordo.
Resolver problemas de utilização total do servidor exige que os administradores compreendam e considerem vários fatores, incluindo, mas não se limitando, a requisitos da carga de trabalho, programações do usuário e de trabalho, outros processos agendados no computador servidor e os recursos disponíveis. Ações que solucionam alocações de memória total excessivas no computador servidor podem incluir qualquer uma das seguintes ações:
Aumentar a memória física disponível no computador servidor.
Diminua o consumo das instâncias do SSAS ou instâncias do banco de dados relacional modificando o design depois de examinar o Guia de Desempenho Multidimensional do SSAS ou ente em contato com o Suporte da Microsoft.
Diminua o consumo de outros processos através de meios específicos para cada um dos processos, ou encerre aqueles que não são necessários no servidor.
Agende trabalhos ou relatórios nas instâncias afetadas para evitar carga de trabalho simultânea, como aquela em que a memória do servidor é alocada excessivamente.
Ajuste os limites configurados para o alerta para evitar a condição.
Desabilite totalmente o monitor se o uso de memória não for um problema no servidor.
Documentação TechNet para as propriedades de memória do Analysis Services
Configurar propriedades do servidor no Analysis Services
Guia de Desempenho Multidimensional do SSAS
Nome | Descrição | Valor padrão |
Limite Crítico (%) | O Estado de Integridade mudará para Crítico quando o Espaço Livre não reservado (%) cair abaixo do limite. | 5 |
Habilitado | Habilita ou desabilita o fluxo de trabalho | Sim |
Gerar Alertas | Define se o fluxo de trabalho gera um Alerta | Sim |
Intervalo em Segundos | O intervalo de tempo recorrente em segundos no qual executa-se o fluxo de trabalho. | 900 |
Número de amostras | O Estado da Integridade muda se o número de violações do limite for maior ou igual ao Número Mínimo de Violações. | 4 |
Hora da Sincronização | A hora da sincronização especificada usando um formato de 24 horas. Pode ser omitido. |
|
Tempo limite (segundos) | Especifica o tempo que o fluxo de trabalho pode funcionar antes de ser fechado e marcado como com falha. | 300 |
Limite de aviso (%) | O Estado de Integridade mudará para Aviso se o Espaço Livre Não Reservado (%) cair abaixo do limite, mas ainda for maior que o Limite Crítico (%). | 10 |
Target | Microsoft.SQLServer.2008.AnalysisServices.Instance | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='MemoryLimitHighGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='MemoryLeavesForOsGB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='TotalPhysicalMemoryGB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='MemoryUsageGB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='MemoryUsageByOtherProcessGB']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='UsedPhysicalMemoryGB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='MemoryLimitLowGB']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='MemoryLimitLowPercent']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='MemoryLimitHighPercent']$</AlertParameter9>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Below" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Above" HealthState="Success"/>
</OperationalStates>
<Configuration>
<WarningThreshold>10</WarningThreshold>
<CriticalThreshold>5</CriticalThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>