Throttling Configuration

Each throttling method is configured via the web.config file for the ErrorReportingWebServices website, typically located at D:\ERWS_Website\web.config.

Throttling methods take precedence in the order seen below. MachineByApp > Machine > Application. Multiple may be used.

Default recommended configuration:

    <!--  Time for item in the throttle cache to expire  -->
    <add key="ThrottleExpirationInMinutes" value="10" />
    <!--  Number of hits a wer report can happen before be throttled per machine and individual application. To disable the throttle use any value lower than 1.  Takes precedence over Machine throttling settings.  -->
    <add key="MachineByAppMaximumHitsBeforeThrottle" value="5" />
    <!--  Number of hits a wer report can happen before be throttled per machine. To disable the throttle use any value lower than 1  -->
    <add key="MachineMaximumHitsBeforeThrottle" value="0" />
    <!--  Number of hits a wer report can happen before be throttled per application. To disable the throttle use any value lower than 1  -->
    <add key="ApplicationMaximumHitsBeforeThrottle" value="0" />

Throttling Explained

As a StageOne event comes into the collector from a client endpoint, key information is stored in a MemoryCache for any throttling types which are enabled. As repeat events are received, a count value is incremented for a matching throttling key, and the AbsoluteExpiration time for that throttling key's policy is reset to the current Date-Time + ThrottleExpirationInMinutes (water-pouring algorithm). When the count value reaches the value specified for a given throttling type, the collector will send CabRequested=FALSE in the WERResponse, resulting in no cab being sent by the client endpoint.

  • ThrottleExpirationInMinutes - This setting controls the time window for which events are tracked for throttling. ThrottleExpirationInMinutes sets the AbsoluteExpiration policy for the MemoryCache throttling key.

Note: MemoryCache throttling keys are not removed, nor count value reset, until a matching event has not been received for the value of ThrottleExpirationInMinutes. Setting this value too high may result in a perpetual state of throttling, or until the MemoryCaches are cleared for another reason, such as an iisreset or application pool recycling.


Throttling Types

The collector offers 3 different types of throttling when receiving events from client endpoints.

  • MachineByApplication
  • Machine
  • Application

MachineByApplication Throttling

MachineByAppMaximumHitsBeforeThrottle is the primary, and recommended, throttling method. This throttling method allows one application on a machine to be throttled, but will continue to allow other applications on the machine to send events to the collector.

  • Throttling Key: [Machine]-hostname-[Application]-appName-appPath

    ex: [Machine]-Workstation17-[Application]-iexplore.exe-C:\Program Files\Internet Explorer\iexplore.exe

Machine Throttling

MachineMaximumHitsBeforeThrottle tracks all events from a single machine in a single count value, with no regards to what the StageOne Application is. This method can block receiving data from an endpoint which has an application that is crashing frequently, keeping it in a perpetual state of throttling.

  • Throttling Key: [Machine]-hostname

    ex: [Machine]-Workstation17

Application Throttling

This setting should not be configured without explicit consent from Microsoft.

ApplicationMaximumHitsBeforeThrottle tracks all events from a single application in a single count value, with no regards to what the StageOne MachineName is. This method tracks all events for a single application across the entire environment.

  • Throttling Key: [Application]-appName

    ex: [Application]-iexplore.exe