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