IP Library Granted Patent US 12,346,749
Granted Patent B2
US 12,346,749 · App. 17/836,042 · Granted Jul 1, 2025

Adaptive application server request balancing

Inventors: Dabin Feng (Shanghai, CN); Xia Yu (Shanghai, CN); Chen Feng (Shanghai, CN)
Assignee: SAP SE
G06F9/5083
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 12,346,749
App. No.
17/836,042
Granted
Jul 1, 2025
Kind
B2
Abstract

Methods, systems, and computer-readable storage media for adaptive application server request balancing. An example method includes receiving, from a load balancer, an application request for a first application at a first application server. In response to determining that a complexity value for the application request is greater than a complexity value threshold and that an occupancy value for the first application server is greater than an occupancy value threshold, the application request is provided to a global task queue that is accessible by the first application server and other application servers. A notification is received from a second application server of a completion of the application request by the second application server. A completion result of the completion of the application request by the second application server is retrieved from a global results queue and the completion result is provided to the first application in response to the application request.

Claims (52)

1. A computer-implemented method for adaptive application server request balancing, comprising:

receiving an application request for a first application at a first application server and from a load balancer;

in response to determining that a complexity value for the application request is greater than a complexity value threshold and that an occupancy value for the first application server is greater than an occupancy value threshold, providing the application request to a global task queue that is accessible by the first application server and other application servers;

receiving a notification from a second application server of a completion of the application request by the second application server;

retrieving, from a global results queue, a completion result of the completion of the application request by the second application server; and

providing the completion result to the first application in response to the application request.

2. The computer-implemented method of claim 1 , wherein the complexity value for the application request is determined based on a query string complexity, a historical response time for similar requests, and historical record counts for similar requests.

3. The computer-implemented method of claim 2 , wherein different weights are used, when determining the complexity value, for the query string complexity, the historical response time for similar requests, and the historical record counts for similar requests.

4. The computer-implemented method of claim 1 , wherein the occupancy value for the first application server is determined based on a processor utilization value, a memory utilization value, and a number of active worker threads.

5. The computer-implemented method of claim 4 , wherein different weights are used, when determining the occupancy value, for the processor utilization value, the memory utilization value, and the number of active worker threads.

6. The computer-implemented method of claim 1 , wherein the second application server:

determines that an occupancy value for the second application server is less than the occupancy value threshold;

determines that the application request is included in the global task queue;

retrieves the application request from the global task queue;

processes the application request, including determining the completion result for the application request; and

places the completion result into the global results queue.

7. The computer-implemented method of claim 1 , wherein the first application server monitors the global results queue for completion of the application request by an application server other than the first application server.

8. A non-transitory computer-readable storage medium coupled to one or more processors and having instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations for adaptive application server request balancing:

receiving an application request for a first application at a first application server and from a load balancer;

in response to determining that a complexity value for the application request is greater than a complexity value threshold and that an occupancy value for the first application server is greater than an occupancy value threshold, providing the application request to a global task queue that is accessible by the first application server and other application servers;

receiving a notification from a second application server of a completion of the application request by the second application server;

retrieving, from a global results queue, a completion result of the completion of the application request by the second application server; and

providing the completion result to the first application in response to the application request.

9. The computer-readable storage medium of claim 8 , wherein the complexity value for the application request is determined based on a query string complexity, a historical response time for similar requests, and historical record counts for similar requests.

10. The computer-readable storage medium of claim 9 , wherein different weights are used, when determining the complexity value, for the query string complexity, the historical response time for similar requests, and the historical record counts for similar requests.

11. The computer-readable storage medium of claim 8 , wherein the occupancy value for the first application server is determined based on a processor utilization value, a memory utilization value, and a number of active worker threads.

12. The computer-readable storage medium of claim 11 , wherein different weights are used, when determining the occupancy value, for the processor utilization value, the memory utilization value, and the number of active worker threads.

13. The computer-readable storage medium of claim 8 , wherein the second application server:

determines that an occupancy value for the second application server is less than the occupancy value threshold;

determines that the application request is included in the global task queue;

retrieves the application request from the global task queue;

processes the application request, including determining the completion result for the application request; and

places the completion result into the global results queue.

14. The computer-readable storage medium of claim 8 , wherein the first application server monitors the global results queue for completion of the application request by an application server other than the first application server.

15. A system, comprising:

a computing device; and

a computer-readable storage device coupled to the computing device and having instructions stored thereon which, when executed by the computing device, cause the computing device to perform operations for adaptive application server request balancing, the operations comprising:

receiving an application request for a first application at a first application server and from a load balancer;

in response to determining that a complexity value for the application request is greater than a complexity value threshold and that an occupancy value for the first application server is greater than an occupancy value threshold, providing the application request to a global task queue that is accessible by the first application server and other application servers;

receiving a notification from a second application server of a completion of the application request by the second application server;

retrieving, from a global results queue, a completion result of the completion of the application request by the second application server; and

providing the completion result to the first application in response to the application request.

16. The system of claim 15 , wherein the complexity value for the application request is determined based on a query string complexity, a historical response time for similar requests, and historical record counts for similar requests.

17. The system of claim 16 , wherein different weights are used, when determining the complexity value, for the query string complexity, the historical response time for similar requests, and the historical record counts for similar requests.

18. The system of claim 15 , wherein the occupancy value for the first application server is determined based on a processor utilization value, a memory utilization value, and a number of active worker threads.

19. The system of claim 18 , wherein different weights are used, when determining the occupancy value, for the processor utilization value, the memory utilization value, and the number of active worker threads.

20. The system of claim 15 , wherein the second application server:

determines that an occupancy value for the second application server is less than the occupancy value threshold;

determines that the application request is included in the global task queue;

retrieves the application request from the global task queue;

processes the application request, including determining the completion result for the application request; and

places the completion result into the global results queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2022
From: FENG, DABIN; YU, XIA; FENG, CHEN
To: SAP SE
Reel/Frame 060146/0109 →
Continuity (1)
Related Publication 20230401106A1 · Dec 14, 2023
References Cited (15)
US 7523106B2 · Russell et al. · 2009 [cited by applicant]
US 10489381B2 · Yu et al. · 2019 [cited by applicant]
US 10503572B2 · Peng et al. · 2019 [cited by applicant]
US 10565089B2 · Yu et al. · 2020 [cited by applicant]
US 11153374B1 · Yu et al. · 2021 [cited by applicant]
US 11334558B2 · Yu et al. · 2022 [cited by applicant]
US 20080209044A1 · Forrester · 2008 [cited by examiner]
US 20160292011A1 · Colson · 2016 [cited by examiner]
US 20180173805A1 · Landes et al. · 2018 [cited by applicant]
US 20200057761A1 · Yu et al. · 2020 [cited by applicant]
US 20200233773A1 · Hsu · 2020 [cited by examiner]
US 20210173838A1 · Yu et al. · 2021 [cited by applicant]
US 20220027210A1 · Barik · 2022 [cited by examiner]
US 20220129314A1 · Yu et al. · 2022 [cited by applicant]
US 20220171663A1 · Hiregoudar · 2022 [cited by examiner]