当达到最大并发 API 条件时,此监视器会发出警报。
当客户遇到 Windows 身份验证时,Exchange、SharePoint + LOB 将中断服务,因为 MaxConcurrentAPI 的默认值低,MaxConcurrentAPI 是服务器可以同时进行的最大 NTLM 或 Kerberos PAC 密码验证次数的上限。
请考虑以下情形:
你具有含多个域的一个或多个林。
不同的域中存在用户和资源(如应用程序或代理服务器)的组合。
远程域用户向运行 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 身份验证执行性能调整。
详细信息
有关此问题的详细信息,请查看下面的 TechNet 文章。 针对 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>