Microsoft Invest - Report throttling
In order to ensure that our systems operate as smoothly as possible for all users, report requests are throttled at both the member and user levels. The limits and how they are applied are described below.
User limits
When a report is submitted by a user, a check is performed to see if the user has submitted six report requests in the past 15 minutes that are either in pending status or currently being processed. If that limit has been met, an error message is generated.
Member limits
Each member is limited to five report requests being processed at the same time (including all users under that member). Any report requests submitted in excess of this limit are placed in a queue. Each member can have up to 100 report requests in the queue at a time. If the member exceeds this amount, they will receive a LIMIT
on their next POST
.
Example
User- and member-level throttling/limits interact with each other. The following example attempts to demonstrate a typical scenario. Assume that User A and User B are associated with the same member. All members have a limit of five report requests being processed concurrently. We assume, for this example, that the following report requests are all submitted within a 15 minute time span:
Report Request | User | Status |
---|---|---|
1 | User A | Processing |
2 | User A | Processing |
3 | User B | Processing |
4 | User B | Processing |
5 | User B | Processing |
6 | User A | Enqueued |
7 | User A | Enqueued |
8 | User A | Enqueued |
8 | User A | Enqueued |
10 | User A | Error |
Report request # 6 is placed in the queue, since there are already five report requests being processed for this member. For the same reason, requests # 6-9 are also placed in the queue. Finally, we can see that request # 10 causes an error to be generated, since User A has submitted their seventh report request within a 15 minute time span.