此監視器會在達到最大並行 API 的條件時發出警示。
客戶遇到由於 MaxConcurrentAPI 的預設值過低導致 Windows 驗證、Exchange, SharePoint + LOB 中斷的情況;MaxConcurrentAPI 是伺服器單次可處理的最大 NTLM 或 Kerberos PAC 密碼驗證數上限。
請試想下述情況:
您有一或多個包含多個網域的樹系。
不同的網域中有多種使用者和資源 (例如應用程式或 Proxy 伺服器) 的組合。
遠端網域使用者對執行 Windows Server 的資源伺服器提出許多 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 驗證的效能。
更多資訊
如需有關此項目的詳細資訊,請考慮閱讀下方的文章。 設定用於 NTLM 傳遞驗證的 MaxConcurrentAPI。
Target | Microsoft.Windows.Server.10.0.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.10.0.MaxConcurrentAPI.Monitor" Accessibility="Public" Enabled="true" Target="ServervNext!Microsoft.Windows.Server.10.0.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.10.0.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>