Max Concurrent API Monitor

Microsoft.Windows.Server.10.0.MaxConcurrentAPI.Monitor (UnitMonitor)

This monitor alerts when Max Concurrent API condition is reached.

Knowledge Base article:

Summary

When customers are experiencing Windows Authentication, Exchange, SharePoint + LOB outages due to the low default value for MaxConcurrentAPI, which is a ceiling for the maximum NTLM or Kerberos PAC password validations a server can take care of at a time.

Consider the following scenario:

In this scenario, the NTLM requests time out. For example, Exchange clients do not authenticate to the Exchange server when this issue occurs. Therefore, users cannot access their mailboxes, and Microsoft Outlook seems to stop responding.

Causes

This issue occurs because the NTLM API throttling limit is reached.

Proliferation of devices generating authentication stress is leading to a growing trend of outages in large organizations.

Economy of Scales gained by cloud stresses the windows infrastructure that leverage our Active directory.

BPOS and O365 have already increased this value to 10 and 150 resp. Registry fix has been widely deployed via past CSS case engagements.

Resolutions

Note: Kerberos PAC validation cannot be disabled for IIS application pools or for some Exchange-related services.

Note: In order to decide what value to set for the MaxConcurrentApi setting in your environment refer to the Knowledge Base article below.

Knowledge Base Article: 2688798

Additional

How to do performance tuning for NTLM authentication by using the MaxConcurrentApi setting.

More Information

For more information on this concern review the TechNet article below. Configuring MaxConcurrentAPI for NTLM Pass-Through Authentication.

Element properties:

TargetMicrosoft.Windows.Server.10.0.OperatingSystem
Parent MonitorSystem.Health.AvailabilityState
CategoryStateCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.Server.MaxConcurrentAPI.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Max Concurrent API Reached alert
Max Concurrent API reached in Server {0}
RunAsSystem.PrivilegedMonitoringAccount

Source Code:

<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>