合計メモリ制限の構成

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

このモニターは、SSAS インスタンスに対して構成されている合計メモリ制限が構成されているしきい値を超えるとアラートを生成します。この状態の場合、オペレーティング システムで基本的機能を実行するために必要な物理メモリ (最低 2 GB) を割り振ることができないおそれがあります。

Knowledge Base article:

概要

このモニターは、SSAS インスタンスに構成されている合計メモリ制限が、構成されているしきい値を超えるとアラートを生成します。この状態の場合、オペレーティング システムが必要な基本機能を実行するための物理メモリを割り振ることができなくなるおそれがあります。また、この構成では、特定のモニター対象インスタンス以外のプロセスが使用している可能性があるメモリは考慮対象外となります。こうしたメモリに関しても、管理者は SSAS 多次元パフォーマンス ガイドを十分に確認した後に合計メモリ制限設定を調整するときに考慮する必要があります。

原因

合計メモリ制限は、最低でも、オペレーティング システムがメモリ管理およびドライバーとハードウェアの相互作用に必要な基本機能を実行するために十分な余地が残る設定でなければなりません。これらの重要な機能に OS が使用できるメモリが不足していると、システムが不安定になったり、障害が発生したりします。したがって、これらの機能で使用できる十分な量の物理メモリを確保するために、この設定を 100% より低い値に構成する必要があります。設定が高すぎると、このモニターが警告状態を通知します。

SSAS の合計メモリ制限の既定の構成値は 80 で、サーバー上の使用可能な物理メモリの 80% を表しています。メモリを大量に使用するプロセス (たとえば、SQL Server リレーショナル データベース エンジンなど) が他にもある場合は、それを考慮に入れて、メモリの制限値を適切に下げる必要があります。この数値を高くしすぎると、OS の物理メモリが不足して大量のディスク ページングが発生し、サーバーのパフォーマンスが不十分になることがあります。

特定のバイト数が必要な場合は、100 より大きい値を指定すれば、物理メモリのバイト数として解釈されます。

注意: SSAS エンジンの合計メモリ制限は、最大メモリのハード制限をサポートする SQL Server リレーショナル データベース エンジンと若干動作が異なります。合計メモリ制限は、サーバーが積極的に可能な限り早くメモリをクリアしようとし始める制限値です。同様に、メモリ下限は、サーバーが SSAS キャッシュからメモリをクリアするのを "怠け" 始める制限値で、既に進行中の既存のセッションまたはクエリへの影響を軽減しようとします。合計メモリ制限に達すると、サーバーが非常に積極的にキャッシュからメモリをクリアするようになるため、サーバーのパフォーマンスに影響が出る場合があります。サーバーは、メモリ上限の設定もサポートしています。これは、サーバーが自己の裁量でセッションを終了してメモリを解放しようとし始める限界値です。これは一部のユーザーに障害を起こす可能性があるため、合計メモリ制限はハード制限としては施行されません。メモリを大量に必要とする性質の一部のクエリまたはジョブに対応するために、OLAP エンジンは、サポートするように構成された制限内でそれらのクエリまたはジョブに最大限のサービスを提供するからです。

解決方法

この状態は、次のいずれかの処置によって解決される可能性があります。

外部資料

SQL Server 2008 におけるメモリ構成とサイズ変更の考慮事項

Analysis Services メモリのプロパティに関する TechNet 資料

Analysis Services のサーバー構成プロパティ

SSAS 多次元パフォーマンス ガイド

上書き可能なパラメーター

名前

説明

既定値

有効

ワークフローを有効または無効にします

はい

アラートを生成する

ワークフローがアラートを生成するかどうかを定義する

はい

間隔 (秒)

ワークフローを実行する定期的な実行間隔 (秒)。

604800

同期時刻

24 時間形式で指定した同期時刻。省略可能です。

 

警告しきい値 (GB)

このモニターは、オペレーティング システムに対して構成されている合計メモリ制限が構成されているしきい値を超えるとアラートを生成します。この状態の場合、オペレーティング システムで必要な基本的機能を実行するために必要な物理メモリ (最低 2 GB) を割り振ることができないおそれがあります。

2

タイムアウト (秒)

ワークフローが終了して失敗とマークされるまでの、ワークフローの許容実行時間を指定します。

300

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: 無効な合計メモリ制限の構成
SSAS インスタンスに構成されている合計メモリ制限 ({0} GB) が必要なオペレーティング システム機能で求められる構成しきい値を超えたため、システムが不安定になったり障害が発生したりする可能性があります。
サーバーのメモリ合計: {2} GB
メモリ使用量合計: {5} GB
SSAS プロセス以外の使用メモリ: {4} GB
SSAS の使用メモリ: {3} GB
SSAS メモリの制限 - 低: {6} GB ({7}\%)
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/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>