Configuração TotalMemoryLimit

Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration (UnitMonitor)

O monitor alerta quando o TotalMemoryLimit configurado para a instância do SSAS excede o limite configurado, arriscando a alocação de memória física necessária para o sistema operacional realizar as funções básicas necessárias, pelo menos 2 GB.

Knowledge Base article:

Resumo

O monitor alerta quando o TotalMemoryLimit configurado para a instância do SSAS excede o limite configurado, arriscando a alocação de memória física necessária para o sistema operacional realizar as funções básicas necessárias. Além disso, a configuração não é responsável por possíveis consumos de memória de processos diferentes da instância monitorada específica, que também pode ser considerada por um administrador ao ajustar as configurações de TotalMemoryLimit depois de revisar totalmente o Guia de Desempenho Multidimensional do SSAS.

Causas

O TotalMemoryLimit deve permitir no mínimo espaço suficiente para o sistema operacional realizar as funções básicas necessárias do gerenciamento de memória e interação entre unidade e hardware. Se o sistema operacional tem memória insuficiente disponível para essas funções fundamentais, pode ocorrer instabilidade e falha do sistema. Portanto, a configuração deve ser definida um pouco abaixo de 100% para garantir que essas funções tenham memória física suficiente disponível. Se estiver definido para muito alta, esse monitor alertará sobre a condição.

A configuração padrão para o SSAS é 80 para o TotalMemoryLimit, representando 80% da memória física disponível no servidor. Se outros grandes consumidores de memória (por exemplo, o mecanismo do banco de dados relacional do SQL Server) estão presentes, isso deve ser considerado e as configurações de limite de memória diminuídas adequadamente. Se o número for elevado demais, o sistema operacional pode executar baixo na memória física e pode resultar em altas quantidades de paginação de disco, levando a desempenho ineficiente no servidor.

Se um número específico de bytes for necessário, qualquer valor maior que 100 é interpretado como um número de bytes da memória física.

Observação: diferente do mecanismo do banco de dados relacional do SQL Server, que suporta uma limitação de memória máxima rígida, o TotalMemoryLimit do mecanismo do SSAS trabalha levemente diferente. O TotalMemoryLimit é o limite no qual o servidor começará a tentar agressivamente a limpar a memória o mais rapidamente possível. Diferentemente, o LowMemoryLimit é o limite no qual o servidor começará a tentar limpar a memória do cache do SSAS “preguiçosamente”, tentando reduzir o impacto em qualquer sessão ou consulta existente já em andamento. Quando o TotalMemoryLimit for atingido, o desempenho do servidor pode ser impactado, porque o servidor estará limpando muito agressivamente a memória do cache. O servidor também suporta uma definição HardMemoryLimit – um ponto onde o servidor começará arbitrariamente a encerrar sessões para tentar liberar memória. Isso possivelmente causará falhas para alguns usuários e é por isso que o TotalMemoryLimit não é forçado como um limite rígido, porque algumas consultas ou trabalhos podem por natureza apenas consumir muita memória e o mecanismo OLAP fará o melhor para servi-lo dentro dos limites configurados.

Resoluções

Essa condição pode ser resolvida por uma das ações a seguir:

Externo

Configuração de memória e considerações de dimensionamento no SQL Server 2008

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

Parâmetros Substituíveis

Nome

Descrição

Valor padrão

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.

604800

Hora da Sincronização

A hora da sincronização especificada usando um formato de 24 horas. Pode ser omitido.

 

Limite de Aviso (GB)

O monitor alerta quando o TotalMemoryLimit configurado para a instância do SSAS excede o limite configurado, arriscando a alocação de memória física necessária para o sistema operacional realizar as funções básicas necessárias, pelo menos 2 GB.

2

Element properties:

TargetMicrosoft.SQLServer.2008.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: Configuração TotalMemoryLimit Inválida
O TotalMemoryLimit configurado para a instância do SSAS ({0} GB) excede o limite configurado necessário para o sistema operacional funcionar e pode levar à instabilidade do sistema ou falha.
Memória total no servidor: {2} GB
Utilização total da memória: {5} GB
Memória utilizada pelos processos não-SSAS: {4} GB
Memória utilizada pelo SSAS: {3} GB
Limite baixo da memória do SSAS: {6} GB ({7}\%)
Limite alto da memória do SSAS: {0} GB ({8}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</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="Warning" MonitorTypeStateID="NotConfigured" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Configured" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>2</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>