このモニターは、SSAS インスタンスによって割り振られたメモリが構成されている警告しきい値を超えると警告を報告します。割り振られたメモリは、SSAS インスタンスの合計メモリ制限の設定に対するパーセンテージとして示されます。モニターは、構成されている重大しきい値をメモリ割り振りが超えると重大アラートを発行します。
このモニターは、SSAS インスタンスによって割り振られたメモリが構成されている警告しきい値を超えると警告を報告します。割り振られたメモリは、SSAS インスタンスの合計メモリ制限の設定に対するパーセンテージとして示されます。モニターは、構成されている重大しきい値をメモリ割り振りが超えると重大アラートを発行します。
SSAS は、状況によっては、合計メモリ制限の設定に近づくか、または超過することがあります。1 回の操作に必要なメモリがこの制限を超える場合もあり、サーバー側で緊急性の低いタスクのメモリをクリアすることによりこの制限を超えてメモリが割り振られることもあるとはいえ、それができなければ操作は失敗することになります。
これは、規模の大きいディメンションまたはファクト データを処理するときに発生することがあります。特に、大量の領域を使用するデータ型 (長い文字列やバイナリ データなど) の属性が存在する場合や、ディメンションに含まれるメンバーが多い場合などです。また、サーバー上で実行されるクエリが非常に多くの領域を必要とするときに発生することもあります。特に、複数のディメンションをクロス結合する場合や、管理者によって事前に集計されていなかったセル、あるいは単に事前の集計が不可能だったセルについて結果を得るために大量の計算が必要になる場合などです。
サーバーのメモリの制限を超過する場合、この問題を改善するために管理者が使用できる方法が数多くあります。メモリ使用の原因となっている基礎的なアクティビティ、サーバー上のワークロードの要件、使用可能なリソースや他の要素について考察したり、 SSAS 多次元パフォーマンス ガイドをじっくりと確認して考慮したり、必要に応じて Microsoft サポートに相談したりした後、以下の方法でこの問題に対処することもできます。
メモリ割り当ての最も多いセッションを識別し、それらの 1 つ以上のセッションを手動で終了します。
メモリ割り当ての最も多いセッションを識別した後、ジョブまたはレポートの処理スケジュールをケースバイケースで再設定し、使用率の低い時間にクエリを実行してキャッシュに取り込んでおくか、事前に特定の集計を設計しておいて処理中にビルドすることにより、その後のユーザー クエリによるメモリの使用量を削減します。
ホスト コンピューターに物理メモリを増設します。
SQL Server リレーショナル データベース エンジンのインスタンス、または SSAS の他のインスタンスなど、ホスト コンピューター上の他のプロセスによって使用されるメモリの量を減らします。
合計メモリ制限またはアラートの構成されたしきい値を増やすことにより、この状態を回避します。
メモリ使用量がサーバーで問題にならなければ、モニターを完全に無効にします。
SQL Server 2012 でのメモリ構成とサイズ変更に関する考慮事項
Analysis Services メモリのプロパティに関する TechNet 資料
Analysis Services でのサーバーのプロパティの構成
SSAS パフォーマンス カウンターに関する TechNet 資料
名前 | 説明 | 既定値 |
重大なしきい値 (%) | 正常性状態は、Analysis Services メモリ使用量 (%) がしきい値を超えると重大に変更されます。 | 95 |
有効 | ワークフローを有効または無効にします | はい |
アラートを生成する | ワークフローがアラートを生成するかどうかを定義する | はい |
間隔 (秒) | ワークフローを実行する定期的な実行間隔 (秒)。 | 900 |
サンプル数 | 正常性状態は、しきい値違反数が違反の最小数以上になると変更されます。 | 4 |
同期時刻 | 24 時間形式で指定した同期時刻。省略可能です。 |
|
タイムアウト (秒) | ワークフローが終了して失敗とマークされるまでの、ワークフローの許容実行時間を指定します。 | 300 |
警告のしきい値 (%) | 正常性状態は、Analysis Services メモリ使用量 (%) がしきい値を超えるものの、重大しきい値 (%) より低い場合に警告に変更されます。 | 80 |
Target | Microsoft.SQLServer.2012.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.2012.AnalysisServices.MonitorType.Instance.MemoryUsagePercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>