SQL Server とのメモリ構成競合

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

このモニターは、サーバーで SQL Server リレーショナル データベース エンジン プロセスが実行されていて、SSAS インスタンスの合計メモリ制限の構成値が指定のしきい値を超えるとアラートを生成し、SQL Server プロセスが十分なメモリを確保できるようにします。

Knowledge Base article:

概要

SQL Server Analysis Services の合計メモリ制限の構成設定値を、コンピューター上の他のプロセスのためのメモリ割り当てに適合するように、適宜調整する必要があります。

原因

特に、SQL Server リレーショナル データベース エンジンは、SSAS も実行しているコンピューター上のメモリ リソースを消費する一般的なプロセスの主要な例であり、そのような状況では、決まった量の同じリソースを大量消費する両者によって物理メモリの競合につながる可能性があります。両方のデータベース サービスがそれぞれ必要な機能を実行するために、互いに十分な物理メモリを確保できるように、両方のデータベース サービスを構成することが必要になります。SSAS の合計メモリ制限の構成が高すぎると、SSAS はメモリを過度に消費して、リレーショナル データベース エンジン (あるいは、実際に多くのメモリを消費する別のプロセス) との競合のために、物理メモリを使い果たしてしまう可能性があります。SQL Server の構成されたメモリ消費量に加えて、コンピューター上で必要とされるオペレーティング システムや他の代表的なプロセスのメモリ消費のための余地を設けられるよう、合計メモリ制限を十分に低い値に構成する必要があります。

解決方法

メモリ構成の競合が起きたときには、管理者は各ユーザーと他のプロセスの要求とリソースとをはかりにかけてから、関係するすべてのプロセスの構成を適宜調整する必要があります。Microsoft データベース サーバーにおけるこの種の問題の最も一般的なシナリオは、SSAS のインスタンスと SQL Server リレーショナル データベース エンジンから生じます。幸いなことに、どちらのサービスにも、必要に応じて調整できる構成設定があります。どんな場合にも適するような SSAS の合計メモリ制限の設定や、SQL リレーショナル データベース エンジンの最大メモリ制限の設定といったものはないので、このアラートのしきい値は、それぞれ個別の環境を勘案して管理者が調整できるようになっています。この状況に遭遇したときは、考え得る多くの方法のいずれかを使って、条件を緩和することができます。

外部資料

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

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

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

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

名前

説明

既定値

有効

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

はい

アラートを生成する

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

はい

間隔 (秒)

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

604800

同期時刻

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

 

警告しきい値 (%)

正常性状態は、サーバー上で SQL Server リレーショナル データベース エンジン プロセスが実行されていて、SSAS インスタンスの合計メモリ制限の構成設定がしきい値を超えると変更されます。

40

タイムアウト (秒)

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

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.ConfigurationConflictWithSQLServer
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: SQL Server とのメモリ構成競合
SQL Server Analysis Services インスタンスの合計メモリ制限の構成設定 ({0} GB) は、オペレーティング システムと SQL Server 用に {2} GB のうち {1} 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.ConfigurationConflictWithSQLServer" 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.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer.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="ConfigurationConflict" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="NoConfigurationConflict" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>40</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>