O monitor indica um aviso quando as alocações de memória pela instância do SSAS supera o WarningThreshold configurado, expresso como um porcentual do TotalMemoryLimit definido para a instância do SSAS. O monitor emite um alerta crítico quando essas alocações superam o CriticalThreshold configurado.
O monitor indica um aviso quando as alocações de memória pela instância do SSAS supera o WarningThreshold configurado, expresso como um porcentual do TotalMemoryLimit definido para a instância do SSAS. O monitor emite um alerta crítico quando essas alocações superam o CriticalThreshold configurado.
O SSAS pode abordar ou exceder o TotalMemoryLimit definido em algumas circunstâncias. Em alguns casos, uma única operação exige memória além desse limite e, apesar do melhor esforço do servidor para limpar memória de outras tarefas menos imediatas, as alocações podem algumas vezes necessariamente exceder os limites configurados ou as operações serão forçadas a falhar.
Isso pode ocorrer ao processar grandes dimensões ou dados de fato, particularmente se há atributos com tipos de dados consumindo grandes quantidades de espaço (por exemplo, cadeias de caracteres longas, dados binários, etc.) ou se a dimensão contém vários membros. Além disso, as consultas executadas no servidor podem cobrir espaços muito grandes, particularmente se várias dimensões estão sendo cruzadas ou cálculos significantes são necessários para derivar resultados para células não agregadas anteriormente por um administrador inteligente ou simplesmente não é possível agregar antecipadamente.
Quando os limites de memória para um servidor são excedidos, há várias abordagens que os administradores podem usar para resolver o problema. Depois de considerar a atividade subjacente causando utilização de memória, os requisitos para a carga de trabalho no servidor, os recursos disponíveis e outros fatores, assim como a total revisão e consideração do Guia de Desempenho Multidimensional do SSAS ou consultoria com o suporte da Microsoft, conforme necessário, qualquer uma das seguintes abordagens pode ser usada para abordar o problema:
Identificar a(s) sessão(ões) responsável(eis) para as alocações de memória mais significativas e encerrá-las manualmente.
Identificar a(s) sessão(ões) responsável(eis) pelas alocações de memória mais significativas e abordá-las caso a caso para reagendar trabalhos de processamento ou relatórios, pré-alocar com consultas de aquecimento de cache durante momentos de baixa utilização ou criando agregações específicas antecipadamente, para serem criadas durante o processamento e, portanto, subsequentemente reduzir o consumo de memória das consultas do usuário.
Aumentar a memória física no computador de hospedagem.
Diminuir a utilização de memória por outros processos no computador de hospedagem, como as instâncias do mecanismo do banco de dados relacional do SQL Server ou outras instâncias do SSAS.
Aumentar o TotalMemoryLimit ou os limites configurados para o alerta evitar a condição.
Desabilite totalmente o monitor se a utilização 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 da Integridade muda para Crítico quando a utilização da memória do Analysis Services (%) excede o limite. | 95 |
Habilitado | Habilita ou desabilita o fluxo de trabalho | True |
Gerar Alertas | Define se o fluxo de trabalho gera um Alerta | True |
Intervalo em Segundos | O intervalo de tempo recorrente em segundos no qual executa-se o fluxo de trabalho. | 900 |
Hora da Sincronização | A hora da sincronização especificada usando um formato de 24 horas. Pode ser omitido. | 4 |
Limite de Aviso (%) | O Estado da Integridade muda para Aviso quando a utilização da memória do Analysis Services (%) excede o limite, mas ainda estiver menor do que o Limite Crítico (%). |
|
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.MemoryUsagePercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage" 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.MemoryUsagePercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage.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="Above" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Below" HealthState="Success"/>
</OperationalStates>
<Configuration>
<WarningThreshold>80</WarningThreshold>
<CriticalThreshold>95</CriticalThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>