此監視會在達到最大並行 API 的條件時發出警示。
客戶遇到由於 MaxConcurrentAPI 的預設值過低導致 Windows 驗證、Exchange, SharePoint + LOB 中斷的情況;MaxConcurrentAPI 是伺服器單次可處理的最大 NTLM 或 Kerberos PAC 密碼驗證數上限。
請試想下述情況:
您有一或多個包含多個網域的樹系。
不同的網域中有多種使用者和資源 (例如應用程式或 Proxy 伺服器) 的組合。
遠端網域使用者對執行 Windows Server 2008 R2 的資源伺服器提出許多 NTLM 登入要求。
在這種情況下,NTLM 要求會逾時。 例如,發生這個問題時,Exchange 用戶端便無法向 Exchange 伺服器進行驗證。 因此,使用者將無法存取信箱,而且 Microsoft Outlook 也會出現停止回應的狀況。
發生這個問題的原因是已達到 NTLM API 節流限制。
在大型組織中,裝置數量遽增所產生的驗證壓力,導致服務中斷的問題漸趨嚴重。
雲端造成經濟規模擴大,對採用 Active Directory 的 Windows 基礎結構形成壓力。
BPOS 和 O365 已分別將這個值增加到 10 和 150。我們也透過過去處理的 CSS 案例,大規模進行了登錄修正。
在發生問題的伺服器上將 MaxConcurrentApi 登錄值提高。 若要變更 MaxConcurrentApi 設定,請執行下列步驟:
1. 依序按一下 [開始] 和 [執行]、輸入 regedit,然後按一下 [確定]。
2. 找到並按一下以下的登錄子機碼:
3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
4. 在 [編輯] 功能表中指向 [新增],然後按一下 [DWORD 值]。
5. 輸入 MaxConcurrentApi,然後按 Enter。
6. 在 [編輯] 功能表中,按一下 [修改]。
7. 輸入新的 MaxConcurrentApi 設定 (使用小數),然後按一下 [確定]。
8. 在命令提示字元下,輸入下列命令,然後按 Enter:
9. net stop netlogon
10. 輸入下列命令,然後按 Enter:
11. net start netlogon
確認伺服器及其網域控制站 (或信任的網域控制站 - 如果狀況出現在網站控制站) 之間的網路未出現任何延遲狀況。 網路延遲可能會造成問題或讓問題惡化。
對於使用 NTLM 的應用程式和服務,您只需要將應用程式設定成改用 Kerberos 驗證。 設定的方法將依應用程式而異。
如果 Kerberos PAC 驗證是問題徵兆所在,請停用 Kerberos PAC 驗證 (若服務允許停用)。 您應該在發生 Kerberos 造成之系統事件 7 的伺服器上執行這個動作。
注意: IIS 應用程式集區或某些 Exchange 相關服務無法停用 Kerberos PAC 驗證。
注意: 若要決定您的環境應該使用的 MaxConcurrentApi 設定值,請參閱下面的知識庫文件。
知識庫文件: 2688798
如何使用 MaxConcurrentApi 設定調整 NTLM 驗證的效能。
更多資訊
如需此問題的詳細資訊,請參閱下面的 TechNet 文件。 Configuring MaxConcurrentAPI for NTLM Pass-Through Authentication (設定 NTLM 傳遞驗證的 MaxConcurrentAPI)。
Target | Microsoft.Windows.Server.2008.OperatingSystem | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | StateCollection | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.Windows.Server.MaxConcurrentAPI.MonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | System.PrivilegedMonitoringAccount |
<UnitMonitor ID="Microsoft.Windows.Server.2008.MaxConcurrentAPI.Monitor" Accessibility="Public" Enabled="true" Target="Server2008!Microsoft.Windows.Server.2008.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="WindowsServer!Microsoft.Windows.Server.MaxConcurrentAPI.MonitorType" ConfirmDelivery="false" RunAs="System!System.PrivilegedMonitoringAccount">
<Category>StateCollection</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.2008.MaxConcurrentAPI.Monitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="MaxConcurrentAPIAvailable" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="MaxConcurrentAPIReached" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<DiagnosticMode>0</DiagnosticMode>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<ThresholdWaiters>50</ThresholdWaiters>
<ThresholdTimeouts>2000</ThresholdTimeouts>
</Configuration>
</UnitMonitor>