IP Library Granted Patent US 10,193,825
Granted Patent B2
US 10,193,825 · App. 15/956,513 · Granted Jan 29, 2019

Capacity-based server selection

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 10,193,825
App. No.
15/956,513
Granted
Jan 29, 2019
Kind
B2
Abstract

A network request is received. A server is selected among a plurality of servers eligible to handle the network request, wherein selecting the server includes selecting a server in an ordering of the plurality of servers based its load level. The selected server is enabled to handle the network request.

Claims (36)

1. A method, comprising:

receiving a network request;

identifying a plurality of servers eligible to handle the network request and a determined traversal order of the plurality of servers eligible to handle the network request;

traversing at least a portion of the plurality of eligible servers in the determined traversal order to identify that a selected server of the plurality of servers eligible to handle the network request has a non-zero higher load as opposed to another server of the plurality of servers that has a lower load;

at least in part in response to the identification that the selected one of the plurality of servers has the non-zero higher load as opposed to the another server of the plurality of servers that has the lower load, determining to assign the network request to the selected server with the non-zero higher load, wherein the selected server has a load threshold that is dynamically exceedable based at least in part on a load level of a next server in the determined traversal order of the plurality of servers; and

enabling the selected server to handle the network request.

2. The method of claim 1 , wherein the traversal order of the plurality of servers is predetermined.

3. The method of claim 1 , wherein the traversal order of the plurality of servers is at least in part specified by a user.

4. The method of claim 1 , wherein the traversal order of the plurality servers is determined based at least in part on an ordering of a performance characteristic of each server of the plurality of servers.

5. The method of claim 1 , wherein a total number of network connection requests being handled for each server of the plurality of servers is tracked.

6. The method of claim 1 , wherein the selected server has not reached its load threshold in the event a total number of concurrent network connections being handled by the selected server is less than the load threshold.

7. The method of claim 1 , wherein each server of the plurality of servers is associated with a corresponding load threshold that may be different from each other.

8. The method of claim 1 , wherein the load threshold was determined for the selected server at least in part by determining a performance characteristic of the selected server at a plurality of s load levels of the selected server and by determining a historical performance value for each of the plurality of load levels.

9. The method of claim 8 , wherein the load threshold was determined for the selected server at least in part by selecting a load level that corresponds to a worst historical performance value that still meets an acceptable performance value limit.

10. The method of claim 8 , wherein determining the historical performance value for at least one of the plurality of load levels includes averaging performance values associated with the at least one of the plurality of load levels.

11. The method of claim 1 , wherein the load threshold was determined for the selected server at least in part by measuring at the system a latency of the selected server when processing a is previous network request.

12. The method of claim 1 , wherein the load threshold was determined for the selected server at least in part by cross normalizing the load threshold across different initial load thresholds of the plurality of servers.

13. The method of claim 1 , wherein the load threshold for the selected server is periodically determined using recent performance characteristics of the selected server.

14. The method of claim 1 , wherein at least a portion of the method is performed by a network load balancer.

15. The method of claim 1 , wherein enabling the selected server to handle the network request includes establishing a connection with the selected server and providing the network request to the server.

16. The method of claim 1 , wherein enabling the selected server to handle the network request includes proxying communication between a client that provided the network request and the selected server.

17. The method of claim 1 , wherein in the event one server of the plurality of servers has been not handling requests for at least a threshold amount of time, the one server is removed from the plurality of servers.

18. The method of claim 1 , wherein in the event every server of the plurality of servers has reached its respective load threshold for at least a threshold amount of time, a new server is added to the plurality of servers.

19. A system, comprising:

a communication interface configured to receive a network request; and

a processor coupled with the communication interface and configured to:

identify a plurality of servers eligible to handle the network request and a determined traversal order of the plurality of servers eligible to handle the network request;

traverse at least a portion of the plurality of eligible servers in the determined traversal order to identify that a selected server of the plurality of servers eligible to handle the network request has a non-zero higher load as opposed to another server of the plurality of servers that has a lower load;

at least in part in response to the identification that the selected one of the plurality of servers has the non-zero higher load as opposed to the another server of the plurality of servers that has the lower load, determine to assign the network request to the selected server with the non-zero higher load, wherein the selected server has a load threshold that is dynamically exceedable based at least in part on a load level of a next server in the determined traversal order of the plurality of servers; and

enable the selected server to handle the network request.

20. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving a network request;

identifying a plurality of servers eligible to handle the network request and a determined traversal order of the plurality of servers eligible to handle the network request;

traversing at least a portion of the plurality of eligible servers in the determined traversal order to identify that a selected server of the plurality of servers eligible to handle the network request has a non-zero higher load as opposed to another server of the plurality of servers that has a lower load;

at least in part in response to the identification that the selected one of the plurality of servers has the non-zero higher load as opposed to the another server of the plurality of servers that has the lower load, determining to assign the network request to the selected server with the non-zero higher load, wherein the selected server has a load threshold that is dynamically exceedable based at least in part on a load level of a next server in the determined traversal order of the plurality of servers; and

enabling the selected server to handle the network request.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
NUNC PRO TUNC ASSIGNMENT Recorded Oct 24, 2019
From: AVI NETWORKS, INC.
To: VMWARE, INC.
Reel/Frame 050826/0640 →