Controlled server loading
First Claim
1. A server for providing data to clients, the server comprising:
- a dispatcher having a queue for storing requests received from clients; and
at least one back-end server;
wherein the dispatcher stores in the queue one or more of the requests received from clients when the back-end server is unavailable to process said one or more requests;
wherein the dispatcher retrieves said one or more requests from the queue for forwarding to the back-end server when the back-end server becomes available to process said one or more requests; and
wherein the dispatcher determines whether the back-end server is available to process said one or more requests by comparing a number of connections concurrently supported by the back-end server to a maximum number of concurrent connections that the back-end server is permitted to support, the maximum number being less than a maximum number of connections which the back-end server is capable of supporting concurrently.
1 Assignment
0 Petitions
Accused Products
Abstract
Standalone and cluster-based servers, including Web servers, control the amount of data processed concurrently by such servers to thereby control server operating performance. A dispatcher is preferably interposed between clients and one or more back-end servers, and preferably monitors the performance of each back-end server (either directly or otherwise). For each back-end server, the dispatcher preferably also controls, in response to the monitored performance, either or both the number of concurrently processed data requests and the number of concurrently supported connections to thereby control the back-end servers'"'"' performance. In one embodiment, the dispatcher uses a packet capture library for capturing packets at OSI layer 2 and implements a simplified TCP/IP protocol in user-space (vs. kernel space) to reduce data copying. Commercially off-the-shelf (COTS) hardware and operating system software are preferably employed to take advantage of their price-to-performance ratio.
-
Citations
38 Claims
-
1. A server for providing data to clients, the server comprising:
-
a dispatcher having a queue for storing requests received from clients; and
at least one back-end server;
wherein the dispatcher stores in the queue one or more of the requests received from clients when the back-end server is unavailable to process said one or more requests;
wherein the dispatcher retrieves said one or more requests from the queue for forwarding to the back-end server when the back-end server becomes available to process said one or more requests; and
wherein the dispatcher determines whether the back-end server is available to process said one or more requests by comparing a number of connections concurrently supported by the back-end server to a maximum number of concurrent connections that the back-end server is permitted to support, the maximum number being less than a maximum number of connections which the back-end server is capable of supporting concurrently. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10)
-
-
2. The server of claim 2 wherein the dispatcher is configured to monitor a performance of the back-end server, to define the maximum number of concurrent connections that the back-end server is permitted to support, and to dynamically adjust the maximum number in response to the monitored performance.
-
11. A method for controlled server loading, the method comprising the steps of:
-
defining a maximum number of concurrent connections that a server is permitted to support;
limiting a number of concurrent connections supported by the server to the maximum number;
monitoring the server'"'"'s performance while it supports the concurrent connections; and
dynamically adjusting the maximum number as a function of the server'"'"'s performance to thereby control a performance factor for the server. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31)
-
-
19. A method for controlled server loading, the method comprising the steps of:
-
receiving a plurality of data requests from clients;
forwarding a number of the data requests to a server for processing; and
storing at least one of the data requests until the server completes processing at least one of the forwarded data requests.
-
-
27. A method for controlled server loading, the method comprising the steps of:
-
defining a maximum number of data requests that a server is permitted to process concurrently;
monitoring the server'"'"'s performance; and
dynamically adjusting the maximum number in response to the monitoring step to thereby adjust the server'"'"'s performance.
-
-
32. A method for controlled loading of a cluster-based server, the cluster-based server including a dispatcher and a plurality of back-end servers, the method comprising the steps of:
-
receiving at the dispatcher a plurality of data requests from clients;
forwarding a plurality of the data requests to each of the back-end servers for processing; and
storing at the dispatcher at least one of the data requests until one of the back-end servers completes processing one of the forwarded data requests. - View Dependent Claims (33, 34, 36, 37, 38)
-
-
35. A method for controlled loading of a cluster-based server, the cluster-based server including a dispatcher and a plurality of back-end servers, the method comprising the steps of:
-
defining, for each back-end server, a maximum number of data requests that can be processed concurrently;
monitoring the performance of each back-end server; and
dynamically adjusting the maximum number for at least one of the back-end servers in response to the monitoring step to thereby adjust the performance of the cluster-based server.
-
Specification