為 SSAS 執行個體所設定的總記憶體限制,超出設定的臨界值 (有配置到作業系統執行其必要基本功能所需的實體記憶體之風險) (至少 2 GB) 時,此監視器會發出警示。
為 SSAS 執行個體所設定的總記憶體限制,超出設定的臨界值 (有配置到作業系統執行其必要基本功能所需的實體記憶體之風險) 時,此監視器會發出警示。此外,組態不會考慮非特定受監視執行個體之處理序的潛在記憶體消耗,但系統管理員在完整檢閱 SSAS Multidimensional Performance Guide (SSAS 多維度效能指南) 之後,於調整總記憶體限制設定時,也必須考慮。
總記憶體限制至少必須要有足夠的空間,可供作業系統執行記憶體管理以及驅動程式與硬體互動的基本必要功能。如果 OS 的可用記憶體不足以執行這些基本功能,則系統會不穩定或失敗。因此,必須將此設定設為稍微低於 100%,才可確保這些功能有足夠的可用實體記憶體。如果設定的太高,則此監視器將會發出警示,警告發生此狀況。
總記憶體限制的預設 SSAS 組態為 80,代表伺服器上有 80% 的可用實體記憶體。如果出現其他大量的記憶體消耗 (例如,SQL Server 關聯式資料庫引擎),則應該考慮此值,並相對應地降低記憶體限制的設定。如果此數字設得太高,則 OS 的實體記憶體可能會不足,並會產生大量的磁碟分頁,進而導致伺服器的效能不佳。
如果需要特定的位元組數,則所有大於 100 的值都會解譯為實體記憶體的位元組數。
附註: SSAS 引擎的總記憶體限制與支援固定記憶體上限的 SQL Server 關聯式資料庫引擎的運作方式略有不同。總記憶體限制是伺服器開始積極嘗試盡快清除記憶體的限制。同樣地,記憶體下限是伺服器開始嘗試「延遲」清除 SSAS 快取中記憶體的限制,以嘗試減少對任何現有工作階段或已在進行中查詢的影響。達到總記憶體限制時,可能會影響伺服器效能,因為伺服器會積極地清除快取中的記憶體。伺服器也支援固定記憶體限制的設定 - 伺服器將開始任意終止工作階段以嘗試釋出憶體的時間點。如此可能會導致部分使用者失敗,而這就是不會強制將總記憶體限制定為固定限制的原因,因為部分查詢或作業依其本質就是需要大量的記憶體,而 OLAP 引擎會在設定支援的限制內,盡其所能地提供記憶體。
此狀況可透過下列任一動作解決:
將總記憶體限制降低到設定的臨界值以下。
為伺服器新增實體記憶體,以降低總記憶體限制的設定 (GB),其以低於可用實體記憶體總計之臨界值的百分比表示。
降低設定的臨界值,以避免發出此警示。
如果不需要為伺服器考量記憶體使用量,請完全停用此監視器。
Memory configuration and sizing considerations in SQL Server 2016 (SQL Server 2016 中記憶體組態與設定大小的考量事項)
Analysis Services 記憶體屬性的 TechNet 文件
SSAS Multidimensional Performance Guide (SSAS 多維度效能指南)
名稱 | 描述 | 預設值 |
已啟用 | 啟用或停用工作流程 | 是 |
產生警示 | 定義工作流程是否產生警示 | 是 |
間隔秒數 | 執行工作流程的週期性時間間隔 (秒)。 | 604800 |
同步處理時間 | 使用 24 小時制指定的同步處理時間。將會忽略。 |
|
警告臨界值 (GB) | 為作業系統所設定的總記憶體限制超出設定的臨界值 (有配置到作業系統執行其必要基本功能所需的實體記憶體之風險) (至少 2 GB) 時,此監視器會發出警示。 | 2 |
逾時 (秒) | 指定允許工作流程在關閉且標示為失敗之前執行的時間。 | 300 |
Target | Microsoft.SQLServer.2016.AnalysisServices.Instance | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | ConfigurationHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration.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="NotConfigured" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Configured" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>2</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>