メモリ使用量

Microsoft.SQLServer.2012.AnalysisServices.UnitMonitor.Instance.MemoryUsage (UnitMonitor)

このモニターは、SSAS インスタンスによって割り振られたメモリが構成されている警告しきい値を超えると警告を報告します。割り振られたメモリは、SSAS インスタンスの合計メモリ制限の設定に対するパーセンテージとして示されます。モニターは、構成されている重大しきい値をメモリ割り振りが超えると重大アラートを発行します。

Knowledge Base article:

概要

このモニターは、SSAS インスタンスによって割り振られたメモリが構成されている警告しきい値を超えると警告を報告します。割り振られたメモリは、SSAS インスタンスの合計メモリ制限の設定に対するパーセンテージとして示されます。モニターは、構成されている重大しきい値をメモリ割り振りが超えると重大アラートを発行します。

原因

SSAS は、状況によっては、合計メモリ制限の設定に近づくか、または超過することがあります。1 回の操作に必要なメモリがこの制限を超える場合もあり、サーバー側で緊急性の低いタスクのメモリをクリアすることによりこの制限を超えてメモリが割り振られることもあるとはいえ、それができなければ操作は失敗することになります。

これは、規模の大きいディメンションまたはファクト データを処理するときに発生することがあります。特に、大量の領域を使用するデータ型 (長い文字列やバイナリ データなど) の属性が存在する場合や、ディメンションに含まれるメンバーが多い場合などです。また、サーバー上で実行されるクエリが非常に多くの領域を必要とするときに発生することもあります。特に、複数のディメンションをクロス結合する場合や、管理者によって事前に集計されていなかったセル、あるいは単に事前の集計が不可能だったセルについて結果を得るために大量の計算が必要になる場合などです。

解決方法

サーバーのメモリの制限を超過する場合、この問題を改善するために管理者が使用できる方法が数多くあります。メモリ使用の原因となっている基礎的なアクティビティ、サーバー上のワークロードの要件、使用可能なリソースや他の要素について考察したり、 SSAS 多次元パフォーマンス ガイドをじっくりと確認して考慮したり、必要に応じて Microsoft サポートに相談したりした後、以下の方法でこの問題に対処することもできます。

外部資料

SQL Server 2012 でのメモリ構成とサイズ変更に関する考慮事項

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

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

SSAS パフォーマンス カウンターに関する TechNet 資料

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

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

名前

説明

既定値

重大なしきい値 (%)

正常性状態は、Analysis Services メモリ使用量 (%) がしきい値を超えると重大に変更されます。

95

有効

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

はい

アラートを生成する

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

はい

間隔 (秒)

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

900

サンプル数

正常性状態は、しきい値違反数が違反の最小数以上になると変更されます。

4

同期時刻

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

 

タイムアウト (秒)

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

300

警告のしきい値 (%)

正常性状態は、Analysis Services メモリ使用量 (%) がしきい値を超えるものの、重大しきい値 (%) より低い場合に警告に変更されます。

80

Element properties:

TargetMicrosoft.SQLServer.2012.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.AnalysisServices.MonitorType.Instance.MemoryUsagePercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2012: 高メモリ使用率
SSAS の現行メモリ使用量 ({3} 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.2012.AnalysisServices.UnitMonitor.Instance.MemoryUsage" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2012.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.AnalysisServices.MonitorType.Instance.MemoryUsagePercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.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="Critical" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<CriticalThreshold>95</CriticalThreshold>
<WarningThreshold>80</WarningThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>