Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
6633914
Bayeh , ; et al.
October 14, 2003
Title
Systems, methods and computer program products for handling client requests for server application processing using a thread pool
Abstract
Systems, methods and computer program products are provided for handling client requests for server application processing wherein a connection between a client and server is transferred to a servlet. A client request from a server is transferred to a servlet via a server thread. The server thread is then returned to the server, thereby leaving an open connection with the requesting client. The open client connection is then retrieved and maintained by the servlet. Upon receiving the transferred client request, the servlet processes the client request and then sends processing results directly to the client via the retrieved connection.
Inventors:
Bayeh; Elias
(Cary,
NC
)
, Davis; Lin
(Cary,
NC
)
Assignee:
International Business Machines Corporation
(Armonk,
NY
)
Appl. No.:
128948
Filed:
August 5, 1998
Current U.S. Class:
709/227
718/107
709/202
Field of Search:
709/203,202,227,29,219,107
U.S. Patent Documents
5754830
May 1998
Butts et al.
5867650
February 1999
Osterman
5928323
July 1999
Gosling et al.
5951694
September 1999
Choquier et al.
5961586
October 1999
Pedersen
6003084
December 1999
Green et al.
6012098
January 2000
Bayeh et al.
6070184
May 2000
Blount et al.
6098093
August 2000
Bayeh et al.
6105067
August 2000
Batra
6131116
October 2000
Riggins et al.
6163797
December 2000
Eckley et al.
6167423
December 2000
Chopra et al.
6477561
November 2002
Robsman
Other References
IBM, System for Dispatching from Multiple Thread Pools, IBM Technical Disclosure Bulletin, vol. 41, Issue 1, pp. 329-332, Jan. 1, 1998.
Primary Examiner:
Burgess; Glenton B.
Assistant Examiner:
Edelman; Bradley
Attorney, Agent or Firm:
Myers Bigel Sibley & Sajovec, P.A. Clay; A. Bruce
Claims
That which is claimed is:
1. A method of handling a client request to a server for server application processing, the method comprising the steps of: allocating a server thread from a pool of available server threads to process the client request; transferring the client request from the allocated server thread to a server application; returning the allocated server thread to the pool of available server threads; and retrieving an open two-way connection resulting from returning the server
Description
FIELD OF THE INVENTION
The present invention relates generally to data processing systems, methods and computer program products and, more particularly, to data processing systems, methods and computer program products for improving the performance of servers and server applications.
BACKGROUND OF THE INVENTION
The paradigm for the Internet is that of a client-server relationship where clients communicate with servers. To provide greater access to the Internet, the communication protocols and languages utilized by clients and servers have become standardized. These protocols include the Hyper-Text Transfer Protocol (HTTP), which is the communication protocol used for communications between clients and servers, and the Transmission Control Protocol/Internet Protocol (TCP/IP), the TCP portion of which is the transport specific protocol for communication between computers or applications. Also standardized is the language in which clients and servers communicate which is called Hyper-Text Markup Language (HTML).
In the context of the World Wide Web (Web) client/server applications, a client may be a Web browser which acts as a user interface. A Web browser sends user requests to an appropriate Web server and formats and displays the HTML data returned from the Web server. A Web browser also evaluates the HTML data to determine if there are any embedded hyper-link statements in the HTML data which would require subsequent browser requests which would then be initiated by the browser. A Web server acts as the server for the client and processes the Web browsers requests and returns the requested response as an HTML data portion of a HTTP data stream.
A Web server typically has an HTTP daemon that forwards client requests to various server applications for processing, as appropriate. These server applications may be either local or remote to the Web server. When a client request for server application processing is received by a Web server, the HTTP daemon for the Web server dispatches a request to the appropriate server application. The HTTP daemon listens for a reply from the server application and then sends the reply from the server application to the requesting client via the Web server.
A Web server serves as an intermediary between a requesting client and a server application. A Web server is conventionally designed to have a finite number of server threads that process Web client requests. For a particular server application request, a server thread typically passes the request to the appropriate server application via an HTTP daemon and then waits for the server application to finish processing before returning to service a new client request. Accordingly, a Web server thread and socket associated with a client request remain "in-use" while a server application is processing a client request.
Unfortunately, the number of concurrent client connections a Web server can handle may be reduced as the number of "in-use" threads and sockets increase. Accordingly, a Web server's throughput and scalability may be reduced as server application requests from clients increase. In addition, server application requests may take longer to process than static Web client requests. Thus, the throughput of a Web server may be reduced further as the number of server application requests are increased. For example, a Web server may normally be able to handle 600 static Web client requests per second. However, the same Web server may only be able to handle 100 server application requests per second.
Because a Web server serves as an intermediary between a Web client and server application, server application response may be delayed in reaching a client. Furthermore, because a server application response travels through a Web server, the performance time of a server application may be negatively affected.
SUMMARY OF THE INVENTION
In view of the above discussion, it is an object of the present invention to allow Web servers to process server application requests from clients without reducing Web server throughput and scalability.
It is another object of the present invention to decrease response time between when a client makes a request to a server application and when the server application responds to the client with processing results.
These and other objects of the present invention are provided by systems, methods and computer program products for handling client requests for server application processing wherein a client request and a connection between the client and server is transferred to a server application queue via a server thread. The server thread is then returned to the server, thereby leaving an open connection with the requesting client. The open client connection is then retrieved and maintained by a server application, such as a servlet. Upon receiving the transferred client request, the servlet processes the client request and then sends processing results directly to the client via the retrieved connection.
Servers incorporating connection passing according to the present invention may be transparent to a client user. Furthermore, servers incorporating connection passing according to the present invention may be advantageous because a server thread can quickly return to a server's thread pool for receiving new client requests. Accordingly, a server's throughput and scalability may not be negatively affected even though the server receives an increase in server application requests. In addition, because a server may not be required to serve as an intermediary between a client and a server application, faster communication between the server application and a client may result.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates the basic communication structure for an,Internet based system in which the present invention may be utilized.
FIG. 2 schematically illustrates handling client requests for server application processing wherein a client connection is passed to a server application, according to the present invention.
FIG. 3 schematically illustrates operations for handling client requests for server application processing, according to the present invention.
DETAILED DESCRIPTION OF THE INVENTION
The present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout.
As will be appreciated by one of skill in the art, the present invention may be embodied as a method, data processing system, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product on a computer-usable storage medium having computer-usable program code means embodied in the medium. Any suitable computer readable medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices.
Client-Server Communications
Referring now to FIG. 1, the basic communication structure for a client-server based system is depicted. As is known to those with skill in the art, client-server environments may include public networks, such as the Internet, and private networks often referred to as "intranets", local area networks (LANS) and wide area networks (WANs). Hereinafter, all references to server applications shall include server applications residing on servers connected to the Internet, to an intranet, and to LANs and WANs. The term "Internet" shall incorporate the term "intranet" and any references to accessing the Internet shall be understood to mean accessing an intranet and LANs and WANs, as well. Hereinafter, the term "computer network" shall incorporate publicly accessible computer networks and private computer networks.
As illustrated in FIG. 1, users may access an Internet server 20 via a computer or terminal referred to as a client 10. Exemplary clients 10 may include, but are not limited to, Apple.RTM., Sun Microsystems.RTM., IBM.RTM., or IBM-compatible personal computers. A client 10 preferably includes a central processing unit 11, a display 12, a pointing device 13, a keyboard 14, access to persistent data storage, and an Internet connection 16 for connecting to the Internet 17. The Internet connection 16 may be made via a modem 15 connected to traditional phone lines, an ISDN link, a T1 link, a T3 link, via cable television, via an ethernet network, and the like. The Internet connection 16 may be made via a third party, such as an "Internet Service Provider" ("ISP") or the Internet connection 16 may be made by a direct connection of the client 10 to the Internet or indirectly via another device connected to the Internet. In the latter case, the client 10 is typically connected to this device via a LAN or WAN. The central processing unit 11 contains one or more microprocessors (not shown) or other computational devices and random access memory (not shown) or its functional equivalent, including but not limited to, RAM, FLASHRAM, and VRAM for storing programs therein for processing by the microprocessor
Quick Search
patentmonkey
UpgradeAccount
IMTBlog
BestLegalBids