Configuração Limite de Memória Total

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

O monitor alertará quando o Limite de Memória Total configurado para a instância do SSAS exceder 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 alertará quando o Limite de Memória Total configurado para a instância do SSAS exceder 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 Limite de Memória Total depois de revisar totalmente o Guia de desempenho multidimensional do SSAS.

Causas

O Limite de Memória Total deve permitir espaço suficiente para que o sistema operacional realize 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 ela estiver definida como muito alta, esse monitor alertará sobre a condição.

A configuração padrão para o SSAS é 80 para o Limite de Memória Total, 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) estiverem presentes, isso deverá ser considerado e as configurações de limite de memória diminuídas adequadamente. Se o número for elevado demais, o sistema operacional poderá ficar com pouca memória física e poderá 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: diferentemente do mecanismo do banco de dados relacional do SQL Server, que dá suporte a uma limitação de memória máxima rígida, o Limite de Memória Total do mecanismo do SSAS trabalha um pouco diferente. O Limite de Memória Total é o limite no qual o servidor começará a tentar agressivamente a limpar a memória o mais rapidamente possível. Diferentemente, o Limite de Memória Baixa é o limite no qual o servidor começará a tentar limpar a memória do cache do SSAS de forma lenta, tentando reduzir o impacto em qualquer sessão ou consulta existente já em andamento. Quando o Limite de Memória Total for atingido, o desempenho do servidor poderá ser impactado, porque o servidor estará limpando muito agressivamente a memória do cache. O servidor também dá suporte a uma configuração Limite de Memória Física – um ponto no qual 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 Limite de Memória Total 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 para os quais está configurado.

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 2016

Documentação TechNet para as propriedades de memória do Analysis Services

Configurar propriedades do servidor no Analysis Services

Documentação TechNet para os Contadores de Desempenho do SSAS

Guia de Desempenho Multidimensional do SSAS

Parâmetros Substituíveis

Nome

Descrição

Valor padrão

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.

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 alertará quando o Limite de Memória Total configurado para o sistema operacional exceder 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

Tempo limite (segundos)

Especifica o tempo que o fluxo de trabalho pode funcionar antes de ser fechado e marcado como com falha.

300

Element properties:

TargetMicrosoft.SQLServer.2016.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2016: configuração Limite de Memória Total inválida
O Limite de Memória Total 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
Uso total de 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.2016.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.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/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>