IP Library Granted Patent US 11,669,420
Granted Patent B2
US 11,669,420 · App. 17/555,765 · Granted Jun 6, 2023

Monitoring performance of computing systems

Inventors: Clayton Myers (Oak Hill, VA); Andrew Smith (Oakton, VA); Richard Gardner (Leesburg, VA); Timothy Lang (McLean, VA)
Assignee: MicroStrategy Incorporated
G06F11/26G06F11/34G06F16/957G06F11/3419
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,669,420
App. No.
17/555,765
Granted
Jun 6, 2023
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for monitoring performance of computing systems. In some implementations, a set of tasks for a server system to perform is identified. Multiple performance testing cycles are performed, in which each of the performance testing cycles includes: sending, for each task in the set of tasks, a request for the server system to perform the task; receiving a response from the server system for each of the requests, and storing a performance measure for each of the tasks based on the response received from the server system for the task. Based on the performance measures for the multiple performance testing cycles, an evaluation is performed whether conditions are satisfied for adjusting one or more operating parameters of the server system or for providing a notification regarding the operation of the server system.

Claims (48)

1. A method performed by one or more computers, the method comprising:

accessing, by the one or more computers, usage data indicating previous requests sent to a server system from remote client devices over a communication network;

based on the usage data indicating previous requests sent to the server system, generating, by the one or more computers, a set of tasks to be performed by the server system during each of a series of testing cycles, wherein the tasks in the set of tasks are determined based at least in part on frequencies that the usage data indicates different documents or different types of tasks were requested by the remote client devices;

in each testing cycle of the series of testing cycles, (i) sending, by the one or more computers, test requests to the server system that simulate requests from remote client devices to perform the tasks in the set of tasks, and (ii) receiving, by the one or more computers, responses that the server system provides in response to the test requests;

based on the received responses from the server system, determining, by the one or more computers, a set of performance measures for each of the testing cycles in the series of testing cycles, wherein each set of performance measures includes a performance measure for each task in the set of tasks; and

comparing, by the one or more computers, the sets of performance measures for the tasks in the set of tasks with reference values for the server system to detect changes in performance of the server system.

2. The method of claim 1 , further comprising determining, for each of the tasks in the set of tasks, a baseline level of performance of the server system for the task based on performance of the server system for each of multiple previous instances of the server system performing the task;

wherein comparing the sets of performance measures with the reference values comprises comparing, for each of the sets of performance measures, the performance measure for each task with the corresponding baseline level of performance for the task.

3. The method of claim 1 , wherein comparing the sets of performance measures with reference values for the server system comprises:

for each of the sets of performance measures, comparing the performance measure for each task in the set of tasks with a corresponding moving average of performance measures of the server system for the task, the moving average being updated to provide different reference values for the task to be used for evaluating performance measures from at least some of the testing cycles.

4. The method of claim 1 , further comprising:

based on the comparison, detecting, by the one or more computers, that performance of the server system for a particular task in the set of tasks deviates from a baseline level of performance for the particular task.

5. The method of claim 4 , further comprising, in response to detecting that performance of the server system for the particular task in the set of tasks deviates from the baseline level of performance for the particular task, changing one or more operating parameters of the server system.

6. The method of claim 1 , further comprising using one or more of the sets of performance measures of the sets of performance measures to update the reference values for the tasks in the set of tasks.

7. The method of claim 1 , wherein sending the test requests to the server system that simulate requests from remote client devices comprises:

running a headless web browser; and

sending the test requests to the server system from the headless web browser.

8. The method of claim 1 , wherein the usage data comprises usage logs that indicate past interactions between the server system and the remote client devices.

9. The method of claim 1 , wherein the testing cycles are repeated at a regular interval over a period of time, with the set of performance measures from each of the testing cycles being compared with reference values to detect whether performance decreases below a reference level represented by the reference values.

10. A system comprising:

one or more computers; and

one or more computer-readable media storing instructions that, when executed, cause the one or more computers to perform operations comprising:

accessing, by the one or more computers, usage data indicating previous requests sent to a server system from remote client devices over a communication network;

based on the usage data indicating previous requests sent to the server system, generating, by the one or more computers, a set of tasks to be performed by the server system during each of a series of testing cycles, wherein the tasks in the set of tasks are determined based at least in part on frequencies that the usage data indicates different documents or different types of tasks were requested by the remote client devices;

in each testing cycle of the series of testing cycles, (i) sending, by the one or more computers, test requests to the server system that simulate requests from remote client devices to perform the tasks in the set of tasks, and (ii) receiving, by the one or more computers, responses that the server system provides in response to the test requests;

based on the received responses from the server system, determining, by the one or more computers, a set of performance measures for each of the testing cycles in the series of testing cycles, wherein each set of performance measures includes a performance measure for each task in the set of tasks; and

comparing, by the one or more computers, the sets of performance measures for the tasks in the set of tasks with reference values for the server system to detect changes in performance of the server system.

11. The system of claim 10 , the operations further comprising determining, for each of the tasks in the set of tasks, a baseline level of performance of the server system for the task based on performance of the server system for each of multiple previous instances of the server system performing the task;

wherein comparing the sets of performance measures with the reference values comprises comparing, for each of the sets of performance measures, the performance measure for each task with the corresponding baseline level of performance for the task.

12. The system of claim 10 , wherein comparing the sets of performance measures with reference values for the server system comprises:

for each of the sets of performance measures, comparing the performance measure for each task in the set of tasks with a corresponding moving average of performance measures of the server system for the task, the moving average being updated to provide different reference values for the task to be used for evaluating performance measures from at least some of the testing cycles.

13. The system of claim 10 , the operations further comprising:

based on the comparison, detecting, by the one or more computers, that performance of the server system for a particular task in the set of tasks deviates from a baseline level of performance for the particular task.

14. The system of claim 13 , the operations further comprising, in response to detecting that performance of the server system for the particular task in the set of tasks deviates from the baseline level of performance for the particular task, changing one or more operating parameters of the server system.

15. The system of claim 10 , the operations further comprising using one or more of the sets of performance measures of the sets of performance measures to update the reference values for the tasks in the set of tasks.

16. The system of claim 10 , wherein sending the test requests to the server system that simulate requests from remote client devices comprises:

running a headless web browser; and

sending the test requests to the server system from the headless web browser.

17. The system of claim 10 , wherein the usage data comprises usage logs that indicate past interactions between the server system and the remote client devices.

18. The system of claim 10 , wherein the testing cycles are repeated at a regular interval over a period of time, with the set of performance measures from each of the testing cycles being compared with reference values to detect whether performance decreases below a reference level represented by the reference values.

19. One or more non-transitory computer-readable media storing instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising:

accessing, by the one or more computers, usage data indicating previous requests sent to a server system from remote client devices over a communication network;

based on the usage data indicating previous requests sent to the server system, generating, by the one or more computers, a set of tasks to be performed by the server system during each of a series of testing cycles, wherein the tasks in the set of tasks are determined based at least in part on frequencies that the usage data indicates different documents or different types of tasks were requested by the remote client devices;

in each testing cycle of the series of testing cycles, (i) sending, by the one or more computers, test requests to the server system that simulate requests from remote client devices to perform the tasks in the set of tasks, and (ii) receiving, by the one or more computers, responses that the server system provides in response to the test requests;

based on the received responses from the server system, determining, by the one or more computers, a set of performance measures for each of the testing cycles in the series of testing cycles, wherein each set of performance measures includes a performance measure for each task in the set of tasks; and

comparing, by the one or more computers, the sets of performance measures for the tasks in the set of tasks with reference values for the server system to detect changes in performance of the server system.

20. The computer-readable media of claim 19 , the operations further comprising determining, for each of the tasks in the set of tasks, a baseline level of performance of the server system for the task based on performance of the server system for each of multiple previous instances of the server system performing the task;

wherein comparing the sets of performance measures with the reference values comprises comparing, for each of the sets of performance measures, the performance measure for each task with the corresponding baseline level of performance for the task.

Assignments (4)
CHANGE OF NAME Recorded Sep 19, 2025
From: MICROSTRATEGY INCORPORATED
To: STRATEGY INC
Reel/Frame 072910/0511 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT REEL/FRAME: 056647/0687, REEL/FRAME: 057435/0023, REEL/FRAME: 059256/0247, REEL/FRAME: 062794/0255 AND REEL/FRAME: 066663/0713 Recorded Sep 26, 2024
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
To: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
Reel/Frame 069065/0539 →
SUPPLEMENTARY PATENT SECURITY AGREEMENT Recorded Feb 18, 2022
From: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 059256/0247 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2021
From: MYERS, CLAYTON; SMITH, ANDREW; GARDNER, RICHARD; LANG, TIMOTHY
To: MICROSTRATEGY INCORPORATED
Reel/Frame 058441/0576 →
Continuity (2)
Continuation 16556636 · Aug 30, 2019
Related Publication 20220171687A1 · Jun 2, 2022