メモリ使用量

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

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

Knowledge Base article:

概要

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

原因

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

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

解決方法

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

外部資料

SQL Server 2014 でのメモリ構成とサイズ変更の考慮事項

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

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

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

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

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

名前

説明

既定値

重大なしきい値 (%)

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

95

有効

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

True

アラートを生成する

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

True

間隔 (秒)

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

900

同期時刻

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

4

警告しきい値 (%)

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

 

Element properties:

TargetMicrosoft.SQLServer.2014.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.MemoryUsagePercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2014: 高いメモリ使用率
SSAS の現行メモリ使用量 ({3} GB) が、構成済みのしきい値 (インスタンスの TotalMemoryLimit 設定に対する割合で表される) を上回っています。
サーバーの総メモリ: {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.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>