IP Library Granted Patent US 8,954,587
Granted Patent B2
US 8,954,587 · App. 13/300,157 · Granted Feb 10, 2015

Mechanism for facilitating dynamic load balancing at application servers in an on-demand services environment

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 8,954,587
App. No.
13/300,157
Granted
Feb 10, 2015
Kind
B2
Abstract

In accordance with embodiments, there are provided mechanisms and methods for facilitating dynamic load balancing at application servers in an on-demand services environment. In one embodiment and by way of example, a method includes polling a plurality of application servers for status, receiving status from each of the plurality of application servers, assigning a priority level to each of the plurality of application servers based on its corresponding status, and facilitating load balancing at the plurality of application servers based on their corresponding priority levels.

Claims (31)

1. A computer-implemented method comprising:

polling a plurality of application servers for status, wherein polling includes periodically pinging each of the plurality of application servers;

in response to the polling, receiving status reports corresponding to the plurality of application servers, wherein each status report includes data analysis relating to an availability or a capability of each of the plurality of application servers, wherein the status reports are generated based on sets of details provided, in real-time, by a plurality virtual machines associated with the plurality of application servers, wherein the sets of details are collected, in real-time, by one or more virtual machines associated with each application server;

assigning priority levels to the plurality of application servers based on the status reports, wherein each application server is assigned a single priority level based on its corresponding status report, wherein the assigned priority levels are dynamically adjusted based on the real-time collection of the sets of details by the plurality of virtual machines, wherein, based on the real-time collection of the sets of details, a high priority level of the assigned priority levels is assigned to one or more application servers that, in comparison with other applications, have more available space in a heap or performed fewer full garbage collections during a last or any particular interval of time; and

facilitating dynamic load balancing at the plurality of application servers based on the assigned priority levels.

2. The computer-implemented method of claim 1 , further comprising accessing data at virtual machines associated with the plurality of application servers, and analyzing the data accessed at the virtual machines, wherein the data relates to at least one of the availability and the capability of each of the plurality of application servers.

3. The computer-implemented method of claim 1 , wherein each priority level includes a number indicating a queue placement of a corresponding application server of the plurality of application servers.

4. A system comprising:

a computing device having a memory to store instructions, and a processing device to execute the instructions, wherein the instructions cause the processing device to:

poll a plurality of application servers for status, wherein polling includes periodically pinging each of the plurality of application servers;

in response to the polling, receive status reports corresponding to the plurality of application servers, wherein each status report includes data analysis relating to an availability or a capability of each of the plurality of application servers, wherein the status reports are generated based on sets of details provided, in real-time, by a plurality virtual machines associated with the plurality of application servers, wherein the sets of details are collected, in real-time, by one or more virtual machines associated with each application server;

assign priority levels to the plurality of application servers based on the status reports, wherein each application server is assigned a single priority level based on its corresponding status report, wherein the assigned priority levels are dynamically adjusted based on the real-time collection of the sets of details by the plurality of virtual machines, wherein, based on the real-time collection of the sets of details, a high priority level of the assigned priority levels is assigned to one or more application servers that, in comparison with other applications, have more available space in a heap or performed fewer full garbage collections during a last or any particular interval of time; and

facilitate dynamic load balancing at the plurality of application servers based on the assigned priority levels.

5. The system of claim 4 , wherein the processing device is further to access data at virtual machines associated with the plurality of application servers, and analyzing the data accessed at the virtual machines, wherein the data relates to at least one of the availability and the capability of each of the plurality of application servers.

6. The system of claim 4 , wherein each priority level includes a number indicating a queue placement of a corresponding application server each of the plurality of application servers.

7. At least one non-transitory machine-readable medium having stored thereon instructions which, when executed by a machine, cause the machine to:

poll a plurality of application servers for status, wherein polling includes periodically pinging each of the plurality of application servers;

in response to the polling, receive status reports corresponding to the plurality of application servers, wherein each status report includes data analysis relating to an availability or a capability of each of the plurality of application servers, wherein the status reports are generated based on sets of details provided, in real-time, by a plurality virtual machines associated with the plurality of application servers, wherein the sets of details are collected, in real-time, by one or more virtual machines associated with each application server;

assign priority levels to the plurality of application servers based on the status reports, wherein each application server is assigned a single priority level based on its corresponding status report, wherein the assigned priority levels are dynamically adjusted based on the real-time collection of the sets of details by the plurality of virtual machines, wherein, based on the real-time collection of the sets of details, a high priority level of the assigned priority levels is assigned to one or more application servers that, in comparison with other applications, have more available space in a heap or performed fewer full garbage collections during a last or any particular interval of time; and

facilitate dynamic load balancing at the plurality of application servers based on the assigned priority levels.

8. The non-transitory machine-readable medium of claim 7 , wherein the machine is further to access data at virtual machines associated with the plurality of application servers, and analyzing the data accessed at the virtual machines, wherein the data relates to at least one of the availability and the capability of each of the plurality of application servers.

9. The non-transitory machine-readable medium of claim 7 , wherein each priority level includes a number indicating a queue placement of a corresponding application server of the plurality of application servers.

10. The computer-implemented method of claim 1 , wherein the priority levels are capable of being dynamically changed with updating of the data analysis based on varying of at least one of the availability and the capability of the application servers.

11. The computer-implemented method of claim 1 , wherein periodic pinging includes at least one of an on-demand pinging as necessitated or desired and an automatic pining based on a predetermined schedule, and wherein each set of details comprises specific information relating to a corresponding application server, the specific information including one or more of an amount of allocated memory to objects, a state of memory heaps, and a number of garbage collections performed during a period of time or for a particular heap.

12. The computer-implemented method of claim 1 , wherein the availability includes a schedule of availability indicating an application server being available now or at a later time or at regular time intervals, and wherein the capability refers to the application server having a capacity for performing a pending job.

13. The system of claim 4 , wherein the priority levels are capable of being dynamically changed with updating of the data analysis based on varying of at least one of the availability and the capability of the application servers.

14. The system of claim 4 , wherein periodic pinging includes at least one of an on-demand pinging as necessitated or desired and an automatic pining based on a predetermined schedule, and wherein each set of details comprises specific information relating to a corresponding application server, the specific information including one or more of an amount of allocated memory to objects, a state of memory heaps, and a number of garbage collections performed during a period of time or for a particular heap.

15. The system of claim 4 , wherein the availability includes a schedule of availability indicating an application server being available now or at a later time or at regular time intervals, and wherein the capability refers to the application server having a capacity for performing a pending job.

16. The non-transitory machine-readable medium of claim 7 , wherein the priority levels are capable of being dynamically changed with updating of the data analysis based on varying of at least one of the availability and the capability of the application servers.

17. The non-transitory machine-readable medium of claim 7 , wherein periodic pinging includes at least one of an on-demand pinging as necessitated or desired and an automatic pining based on a predetermined schedule, and wherein each set of details comprises specific information relating to a corresponding application server, the specific information including one or more of an amount of allocated memory to objects, a state of memory heaps, and a number of garbage collections performed during a period of time or for a particular heap.

18. The non-transitory machine-readable medium of claim 7 , wherein the availability includes a schedule of availability indicating an application server being available now or at a later time or at regular time intervals, and wherein the capability refers to the application server having a capacity for performing a pending job.

Assignments (2)
CHANGE OF NAME Recorded Oct 25, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069268/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2011
From: GUSAK, OLEG
To: SALESFORCE.COM, INC.
Reel/Frame 027264/0434 →