Systems and techniques for utilizing resource aware queues and/or service sharing in a multi-server environment
Assigneesalesforce.com, inc.
InventorsRonald Yang, Vijayanth Devadhar, Manoj Cheenath
Life of this patent
Estimating the term…
Abstract
Systems and techniques for servicing requests in an environment having multiple application servers each having one or more queues to store indications of requests to be serviced by the application servers. A utilization level is determined for a first application server of the multiple application servers. The utilization level is compared to a pre-selected utilization threshold level. The system determines whether to service requests allocated to other application servers in response to the comparing. At least one request allocated to a second application server for servicing.
Claims16
A method for servicing requests in an environment having multiple application servers each having one or more active queues to store at least indications of requests to be serviced by the application servers, the method comprising:
- maintaining a deferred queue of requests for each of the one or more active queues, wherein deferred queues are not monitored by thread pools, and wherein requests are placed in the deferred queue corresponding to a selected active queue from the one or more active queues when sufficient resources to satisfy the requests are not available through the selected active queue;
- determining a utilization level for a first application server of the multiple application servers, wherein the utilization level for the first application server is scoped locally and resource utilization information corresponding to a database accessible by the first application server is scoped globally;
- pushing, at random intervals, the utilization level information for the first application server from the first application server to a second application server;
- pushing, at random intervals, utilization level information for the second application server from the second application server to the first application server;
- comparing the utilization level for the first application server to a pre-selected utilization threshold level;
- determining whether to service requests allocated to the second application server in response to the comparing;
- servicing, with the first application server, at least one request allocated to the second application server, the at least one request being a request from the deferred queue corresponding to the second application server, wherein the second application server triggers a push operation that pushes the at least one request allocated to the first application server from the second application server.
A non-transitory computer-readable medium having stored thereon instructions that when executed by one or more processors to service requests in an environment having multiple application servers each having one or more queues to store at least indications of requests to be serviced by the application servers by:
- maintain a deferred queue of requests for each of the one or more active queues, wherein deferred queues are not monitored by thread pools, and wherein requests are placed in the deferred queue corresponding to a selected active queue from the one or more active queues when sufficient resources to satisfy the requests are not available through the selected active queue;
- determine a utilization level for a first application server of the multiple application servers, wherein the utilization level for the first application server is scoped locally and resource utilization information corresponding to a database accessible by the first application server is scoped globally;
- push, at random intervals, the utilization level information for the first application server from the first application server to a second application server;
- push, at random intervals, utilization level information for the second application server from the second application server to the first application server;
- compare the utilization level for the first application server to a pre-selected utilization threshold level;
- determine whether to service requests allocated to the second application server of in response to the comparing;
- service, with the first application server, at least one request allocated to the second application server, the at least one request being a request from the deferred queue corresponding to the second application server, wherein the second application server triggers a push operation that pushes the at least one request allocated to the first application server from the second application server.
A system comprising an interconnection of a plurality of hardware computing devices, each further comprising at least a processor and memory, the plurality of hardware computing devices to maintain a deferred queue of requests for each of the one or more active queues, wherein deferred queues are not monitored by thread pools, and wherein requests are placed in the deferred queue corresponding to a selected active queue from the one or more active queues when sufficient resources to satisfy the requests are not available through the selected active queue, to determine a utilization level for a first application server of the multiple application servers, wherein the utilization level for the first application server is scoped locally and resource utilization information corresponding to a database accessible by the first application server is scoped globally, to push, at random intervals, the utilization level information for the first application server from the first application server to a second application server, to push, at random intervals, utilization level information for the second application server from the second application server to the first application server, to compare the utilization level for the first application server to a pre-selected utilization threshold level, to determine whether to service requests allocated to the second application server in response to the comparing, and to service, with the first application server, at least one request allocated to the second application server, the at least one request being a request from the deferred queue corresponding to the second application server, wherein the second application server triggers a push operation that pushes the at least one request allocated to the first application server from the second application server.
Dependencies are inferred from the claim text.