US8145759B2 - Dynamically configurable resource pool - Google Patents

Dynamically configurable resource pool Download PDF

Info

Publication number
US8145759B2
US8145759B2 US10/287,324 US28732402A US8145759B2 US 8145759 B2 US8145759 B2 US 8145759B2 US 28732402 A US28732402 A US 28732402A US 8145759 B2 US8145759 B2 US 8145759B2
Authority
US
United States
Prior art keywords
request
pool
connection
resource pool
change
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US10/287,324
Other versions
US20040088413A1 (en
Inventor
Sankara R. Bhogi
Ajay Kumar
Bala Dutt
Venugopal Rao K
Srinivasan Kannan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle America Inc
Original Assignee
Oracle America Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle America Inc filed Critical Oracle America Inc
Priority to US10/287,324 priority Critical patent/US8145759B2/en
Assigned to SUN MICROSYSTEMS, INC. reassignment SUN MICROSYSTEMS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KANNAN, SRINIVASAN, KUMAR, AJAY, RAO, VENUGOPAL K., BHOGI, SANKARA R., DUTT, BALA
Publication of US20040088413A1 publication Critical patent/US20040088413A1/en
Application granted granted Critical
Publication of US8145759B2 publication Critical patent/US8145759B2/en
Assigned to Oracle America, Inc. reassignment Oracle America, Inc. MERGER AND CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: Oracle America, Inc., ORACLE USA, INC., SUN MICROSYSTEMS, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Definitions

  • This invention relates to computer systems, and more particularly to resource pool management in computer systems.
  • a three-tier application is an application that may be organized into three major parts, each of which may be distributed within a networked computer system.
  • the three parts may include: one or more clients, one or more servers, and one or more back-end systems (e.g. databases) along with their management functions.
  • a client may be a program running on a user's computer that includes a graphical user interface, application-specific entry forms, and/or interactive windows for interacting with an application.
  • An exemplary client may be a web browser that allows a user to access the Internet.
  • a server may be a program such as an application server that contains the business logic for an application such as banking transactions or purchasing merchandise for the user of a client.
  • the server may be running on one or more computers.
  • a plurality of client systems may connect to one or more servers as components of a network.
  • An exemplary network of this type is the Internet.
  • Clients may submit requests for data to servers, and if the requested data is available within the server, the server may respond by returning the requested data to the client.
  • a component of the server (requester) may request the data on the behalf of the client from a backend system. This request may require the establishment of a connection between the server and the backend system.
  • a connection is a set of computer system resources and parameters, which allow communications between two or more entities within the system.
  • computers A and B may be components of a computer system, which includes several computers linked together by a communications network.
  • An application running on computer A may reach a point in its execution where it requires data, which is resident on computer B. At this point the application will request that a connection be established between computers A and B whereby, it may obtain the necessary data.
  • some agent within computer A may allocate resources, such as computer memory and buffers, to support the communication and send a message to computer B informing it that a connection is desired.
  • an agent in computer B may allocate resources in computer B to support the communication.
  • a negotiation may take place between the agents in computers A and B, which may include the exchange of several messages. This negotiation may result in a set of parameters, which govern the communication between A and B. These parameters may include: how much data may be sent at one time, what format the data may be in, what to do if an errors during transmission, etc.
  • the negotiations to establish a connection may consume a significant amount of time.
  • the third tier of a three-tier application may include one or more backend systems.
  • a backend system may include one or more databases and programs that facilitate access to the data they contain.
  • the number of clients initiating requests for data, and therefore the number of data requests generated may be quite large.
  • the number of connections between the server and the backend systems needed to fulfill these requests may be quite large.
  • the overhead associated with establishing a connection between the server and backend system may constitute a significant portion of the response time for a request from a client.
  • a server may maintain a pool of pre-established connection, e.g. a connection pool.
  • connection pool manager may then determine if a connection to the specified backend system is available. If such a connection is available, the connection pool manager may supply the connection to the requestor and the requester may then be able to obtain the needed data for the client without incurring the overhead of establishing the connection.
  • Management of a connection pool may involve an attempt to balance the capacity to fulfill requests for connections with limitations on server resources that may be allocated for the connection pool. It may be desirable to have sufficient connections in the connection pool such that all requests for connections may be fulfilled without the need to establish any new connections. In complex systems where the number of backend entities is great, the number of connections and computer resources needed to support them may exceed the total resources available to the server in which the connection pool is running. Therefore, it may be necessary to limit the number of connections in the connection pool. Given a limitation on resources that may be devoted to the connection pool, it may be desirable to implement a set of connections corresponding to the most frequent connection requests received by the connection pool. It may be that the frequency distribution of requests for connections varies as a function of parameters such as time of day, so that a connection pool containing a set of connections optimized to meet the connection demands of morning clients may be quite different from a set optimized for evening clients.
  • connection pool In order to achieve higher levels of economy of server resources, it may be necessary to be able to change (reconfigure) the connection pool to meet changing demands for connections. Changing the configuration of the connection pool (e.g. to change the pool size or other parameters) may require destroying the pool and reinitializing it with new parameters. This procedure may also entail rebooting the computer on which the connection pool resides. Therefore, reconfiguring a connection pool may require the destruction of all connections within the pool at a minimum. For complex systems with a large number of clients, there may be no time at which one or more connections are not in use. Reconfiguring the connection pool may disrupt service to any clients that are currently using connections. This disruption of client services may be of significant duration, particularly if a reboot of the application server is required.
  • the dynamically configurable resource pool may provide a pool of computing resource for use in a computing system or application, such as a connection pool or a thread pool for server systems such as application and web server systems.
  • a server may include a resource pool configured to provide a plurality of computing resources. Other components in the server may be configured to request use of one of the computing resources from the connection pool.
  • the resource pool may include a resource pool manager configured to service requests for the computing resources.
  • the resource pool manager may manage configuration of the resource pool.
  • the resource pool manager may also be configured to receive a configuration change request to change the configuration of the resource pool while the resource pool is available for use.
  • the resource pool manager may determine if the resource is at a safe point for the configuration change request to be implemented. For example, the resource pool manager may dynamically evaluate the configuration change request based on current usage of the resource pool to determine the impact of implementation of the requested configuration change on the current usage of the resource pool.
  • the resource pool manager may delay implementation of the requested configuration change until the resource pool is at a safe point for the configuration change to take effect. For example, if implementation of the requested configuration change would disrupt usage of the resource pool, the resource pool manager may delay implementation of the requested configuration change until the configuration change can be implemented without disrupting usage of the resource pool. Once the resource pool is at a safe point for the configuration change to take effect, the resource pool manager may asynchronously change the resource pool configuration while the resource pool is still available for use.
  • a dynamically configurable resource pool may be a connection pool that services requests for connections to a backend system resource.
  • the main unit may determine if a connection is available in the pool. Different dynamically configurable resource pools may be provided for different types of connections, e.g. to different backend resources. If an unassigned connection exists in the requested pool, the main unit may assign the connection to the requester. Furthermore, if an unassigned connection does not exist in the pool, and the current pool size is less than the maximum pool size, then the main unit may establish a connection and assign the connection to the requester.
  • the wait queue unit may place the request for connection on the wait queue and monitor connection usage for the return of connections to the pool.
  • the connection pool manager may once again determine if an unassigned connection exists in the pool to satisfy a pending request.
  • connection pool manager may be segmented into a main unit for responding configuration requests, connection requests, and requests for current pool usage statistics; a wait queue unit for managing connection requests for which a connection is not currently available, and a statistics unit for responding to requests for cumulative pool usage statistics.
  • the main, wait queue, and statistics units may be configured to be locked separately in order to synchronize concurrent requests for service to the connection pool. This separate locking capability of connection pool management components may increase system performance in a multi-threaded environment. For example, a thread A may issue a request for service to the connection pool, and concurrently a thread B may also issue a request for service to the connection pool.
  • connection pool manager components independently may allow the connection pool to handle multiple requests for service concurrently. Referring to the previous example, thread A may issue a connection request and lock the main unit and its associated resources. Concurrently, thread B may issue a cumulative statistics request and lock the statistics unit and its associated resources. Because the main unit and statistics unit may be locked independently, the two service requests can be fulfilled concurrently thus improving system performance.
  • FIG. 1 illustrates a server including a dynamically configurable resource pool, according to one embodiment
  • FIG. 2 illustrates an embodiment of a dynamically configurable connection pool
  • FIG. 3 illustrates one embodiment of a dynamically configurable connection pool as a component of an application server in a three-tier application
  • FIG. 4 is a flowchart illustrating the initial processing of a service request by the main unit according to one embodiment
  • FIG. 5 is a flowchart illustrating the processing of a request to change the configuration of a dynamically configurable resource pool according to one embodiment
  • FIG. 6 is a flowchart illustrating the processing of a request to change the maximum number of connections of a dynamically configurable connection pool according to one embodiment
  • FIG. 7 is a flowchart illustrating the processing of a request for a resource from a dynamically configurable resource pool according to one embodiment
  • FIG. 8 is a flowchart illustrating the processing of a request for a connection from a dynamically configurable connection pool according to one embodiment
  • FIG. 9 is a flowchart illustrating the processing of a request for dynamically configurable resource pool statistics according to one embodiment.
  • FIG. 10 illustrates one embodiment of a computer system that may include a dynamically configurable resource pool.
  • FIG. 1 illustrates one embodiment of a dynamically configurable resource pool 100 as a component of a server 140 .
  • the server 140 may be a program running on a computer system that provides services to other computer programs running on the same or other computer systems.
  • a requestor 110 may be another component of the server 140 that may make use of one or more of the resources 130 managed by the resource pool 100 .
  • the requester 110 sends a request to the resource pool 100 .
  • the resource pool manager 120 may service resource requests by supplying requested resources 130 and may manage the return of resources to the pool 100 .
  • the resources 130 may be connections to other resources or computer systems, such as a data resource provided by a database resource manager.
  • the dynamically configurable resource pool 100 may be referred to as a dynamically configurable connection pool.
  • the resources may be threads such that dynamically configurable resource pool 100 may be referred to as a dynamically configurable thread pool.
  • the resource pool manager 120 may be capable of altering one or more aspects of the configuration of the resource pool 100 in response to a configuration request. Furthermore, the resource pool manager 120 may be able to alter the configuration of the resource pool 100 while the resources 130 of the pool are available for use, without disrupting this use. Thus, resource pool 100 may be dynamically configurable.
  • a requestor 110 may generate a request to change the configuration of the resource pool 100 . The change may be to reduce the maximum number of resources 130 in the pool 100 , for example.
  • the resource pool manager may determine whether or not the configuration change may be safely implemented at the current time.
  • the resource pool manager 120 may check current statistics on resource pool usage, in particular it may check the total number of resources 130 in use. It may then compare the requested maximum number of resources 130 with the total number of resources currently in use. If the total number of resources 130 currently in use is less than or equal to the requested maximum number of resources, then the resource pool manager 120 may reduce the maximum resource pool size to the requested value without disrupting the current utilization of pool resources 130 .
  • the resource pool manager 120 may delay the implementation of the requested reduction in the maximum number of resources in the pool 100 until such time as current resource usage becomes less than or equal to the requested maximum number of resources for the pool thereby avoiding disruption of pool usage.
  • the resources 130 managed by a dynamically configurable resource pool 100 may be connections 270 .
  • FIG. 2 illustrates a dynamically configurable connection pool 200 .
  • a connection 270 may involve computer system resources and parameters, which allow communications between two or more entities within the system.
  • computers A and B may be components of a computer system, which includes several computers linked together by a communications network.
  • An application running on computer A may reach a point in its execution where it requires data, which is resident on computer B. At this point the application will request that a connection 270 be established between computers A and B whereby, it may obtain the necessary data.
  • agent within computer A may allocate resources, such as computer memory and buffers, to support the communication and send a message to computer B informing it that a connection 270 is desired.
  • resources such as computer memory and buffers
  • an agent in computer B may allocate resources in computer B to support the communication.
  • a negotiation may take place between the agents in computers A and B, which may include the exchange of several messages. This negotiation may result in a set of parameters, which govern the communication between A and B. These parameters may include: how much data may be sent at one time, what format the data may be in, what to do if an errors during transmission, etc.
  • the negotiations to establish a connection 270 may consume a significant amount of time. Therefore, if communications between the entities for which a connection 270 is established occur frequently, it may be advantageous to maintain the connection after its immediate use has been completed in order that it may be reused without incurring the overhead associated with reestablishing the connection.
  • connection pool 200 may include the connections 270 themselves along with a connection pool manager 230 .
  • the connection pool manager 230 may be responsible for responding to all requests for service received by the connection pool 200 . Requests for service received by the connection pool 200 may be grouped into those dealing with the connections 270 themselves, those dealing with statistics of pool usage, and those dealing with the configuration of the pool 200 .
  • the connection pool manager 230 may include a main unit 240 for responding to configuration requests, connection requests, and requests for current pool usage statistics.
  • Configuration requests may include requests to view the pool configuration, requests to change the pool configuration, requests to destroy the pool 200 , and requests to flush the pool.
  • the main unit 240 may provide one or more values for pool configuration parameters.
  • the main unit 240 may employ a dynamic configuration change mechanism to safely change one or more values of pool configuration parameters, as further described below.
  • the main unit 240 may delete all components of the connection pool 200 .
  • the main unit 240 may destroy the connections 270 currently in the pool and not in use.
  • Connection requests may include requests to obtain a connection 270 from the connection pool 200 and requests to return a connection to the connection pool.
  • the main unit 240 may assign a connection to the requester 110 .
  • the main unit 240 may make the connection available in the pool for reassignment.
  • connection pool usage parameters may include total number of connections in the pool, total number of connections in use, and wait queue size, for example.
  • the connection pool manager 230 may include a wait queue unit 250 for managing connection requests for which a connection is not currently available. If the main unit 240 is unable to immediately fulfill a request 220 for a connection, it may pass the request to the wait queue unit 250 . The wait queue unit 250 may place the request 220 on the wait queue 210 . The wait queue unit 250 may monitor connections 270 returned to the connection pool 200 . When a connection 270 matching a stored request 220 becomes available, the wait queue unit 250 may assign the connection to the requester 110 .
  • the connection pool manager 230 may include a statistics unit 260 for responding to requests for cumulative pool usage statistics.
  • Requests for cumulative pool usage statistics may include requests to start accumulating data for one or more cumulative statistics, stop accumulating data for one or more cumulative statistics, and view one or more cumulative statistics.
  • the statistics unit 260 may initialize a portion of computer memory to store data associated with the one or more cumulative statistics.
  • the statistics unit 260 may release that portion of computer memory used to store data associated with the one or more cumulative statistics.
  • the statistics unit 260 may perform any calculations needed to obtain current values for the one or more cumulative statistics and provide those current values to the requester.
  • FIG. 3 illustrates one embodiment of a dynamically configurable connection pool 300 as a component of an application server 330 in a three-tier application.
  • a three-tier application is an application that may be organized into three major parts, each of which may be distributed within a networked computer system.
  • the three parts (tiers) may include: one or more clients 360 , one or more servers 330 (e.g. web servers and/or application servers), and one or more backend systems 370 which may contain one or more databases 380 along with their management functions.
  • a client 360 may be a program running on a user's computer that includes a graphical user interface, application-specific entry forms, and/or interactive windows for interacting with an application.
  • An exemplary client 360 may be a web browser that allows a user to access the Internet.
  • a server 330 may be a program that provides the application logic, such as a service for banking transactions or purchasing merchandise for the user of a client 360 .
  • the server 330 may be running on one or more computers.
  • One or more client systems may be connected to one or more server systems as components of a network 350 .
  • An exemplary network 350 of this type is the Internet.
  • Clients 360 may submit requests to server 330 . Satisfying a request may involve accessing certain data.
  • a component of the server (requester) 340 may request the data from a backend system 370 .
  • the requester may be a component of the application, such as an enterprise Java bean (EJB).
  • This request may require the establishment of a connection 310 between the server 330 and the backend system 370 .
  • the backend system 370 may include one or more databases 380 and programs that facilitate access to the data they contain.
  • a connection between the server 330 and a backend database 380 may be referred to as a database connection.
  • the third tier of a three-tier application may include one or more backend systems 370 .
  • the number of clients 360 initiating requests for data, and therefore the number data requests themselves may be quite large.
  • the number of connections 320 between the server 330 and the backend systems 370 needed to fulfill these requests may be quite large.
  • the overhead associated with establishing a connection 320 between the server 330 and backend system 370 may constitute a significant portion of the response time for a request from a client 360 .
  • the server 330 may be able to significantly reduce response times.
  • an application component When an application component receives a request from a client, it may determine on what backend system 370 and/or in which database 380 the data needed to satisfy the request resides. It may then send a request for a connection with the specific backend system 370 to the dynamically configurable connection pool 300 . The connection pool manager 310 may then determine if a connection 320 ,to the specified backend system 370 is available. If such a connection 320 is available, the connection pool manager 310 may supply the connection to the requestor 340 and the requestor may then be able to obtain the needed data for the client 360 without incurring the overhead of establishing the connection.
  • connection pool 300 may be altered while one or more connections are in use. This dynamically configurable aspect of the connection pool 300 is described in greater detail below. In one embodiment, different dynamically configurable connection pools 300 may be provided for different types of connections.
  • FIG. 4 is a flowchart illustrating the initial processing of a service request by a main unit of a resource pool manager, according to one embodiment.
  • the main unit of the resource pool manager may receive a request for service 410 from a requestor. In response to receiving a request for service, the main unit may determine whether the request is a resource request 430 , a statistics request 440 , or a configuration request 420 .
  • a resource request may be a request for a pooled resource such a thread or a connections to a database, or a request to release previously obtained resource.
  • Statistics requests may include requests for current resource pool usage statistics, requests to begin accumulating data for one or more cumulative statistics, requests to provide current values for one or more cumulative statistics, and requests to discontinue the accumulation of data for one or more cumulative statistics.
  • configuration requests may include, for example, requests for current values of the configuration parameters of the connection pool, requests to change the value of one or more configuration parameters of the connection pool, requests to flush the connection pool, and requests to destroy the connection pool.
  • Connection pool configuration parameters may include: maximum wait queue size, maximum time in wait queue, initial connection pool size, maximum connection pool size, minimum connection pool size, connection reclaim time, and maximum connection idle time.
  • the maximum wait queue size may determine the maximum number of requests for connection that may reside in the wait queue.
  • the maximum time in wait queue may be used to determine how long a request for connection may reside in the wait queue before dropping the request and/or informing the requestor that a connection cannot be provided.
  • the initial connection pool size may be used to determine the number of connections that the connection pool manager will generate upon initialization of the connection pool.
  • the maximum pool size may be used to determine how many additional connections the connection pool manager may generate in response to connection requests above the number specified by the initial connection pool size parameter.
  • the minimum connection pool size may be used to determine the number of connections maintained in the pool. Minimum connection pool size may be maintained once the pool reaches the minimum size.
  • the connection reclaim time parameter may be used to determine the maximum length of time that a connection may be assigned to a requester.
  • the maximum idle connection time parameter may be used to determine the maximum length of time that a connection, which is not in use, may stay in the pool for reassignment. This criteria may be applied for connections above the minimum connection pool size. Requests for service that do not correspond to one of the aforementioned types, or that contain invalid parameters may cause the connection pool manager to return an error message 450 to the requester without further processing.
  • FIG. 5 is a flowchart illustrating the processing of a request to change the configuration of a dynamically configurable resource pool according to one embodiment.
  • the main unit may determine 510 whether implementing the requested change would cause a disruption of the current pool usage. If the implementation of the requested configuration change would not disrupt current pool usage, the main unit may implement 520 the requested new configuration while current resource utilization continues undisturbed. If the implementation of the requested configuration change would disrupt current pool usage, the main unit may hold 530 the requested configuration change and asynchronously update 540 the configuration, when the resource pool reaches a safe point. The resource pool may be at a safe point when implementation of the held configuration change would cause no disruption of the current pool usage.
  • changes to the resource pool configuration may be made dynamically, without disrupting service to requestors.
  • Other configuration requests such as requests to view the current configuration of the resource pool, to flush the resource pool, or to destroy the resource pool, may be implemented without performing a safe point check as described above for configuration change requests.
  • An exemplary configuration request may be a request to change the maximum number of connections resident in a dynamically configurable connection pool.
  • FIG. 6 is a flowchart illustrating the processing of a request to change the maximum number of connections according to one embodiment.
  • the main unit may compare the requested maximum number of connections with the number of connection currently in use 610 to determine if implementing the requested change would cause the destruction of any connections currently assigned to requesters.
  • the maximum number of connections parameter may be changed to the requested maximum number of connections value 620 while all currently assigned connections continue to function without disruption.
  • connection pool manager may delay the implementation of the requested change, store the change request 630 , and begin monitoring changes in connection usage 640 .
  • the connection pool manager may once again determine whether the requested maximum number of connections is greater than, or equal to the number of connections currently in use. In this way changes to the connection pool configuration parameters may be made while one or more connections are in use, without disruption of service to requesters.
  • a configuration change request may be a request to change the number of entries in the wait queue
  • the main unit may determine whether the requested number of entries for the wait queue is greater than or equal to the current size of the wait queue. If the requested wait queue size is less than the current number of connection requests on the wait queue, implementation of the configuration change would cause one or more queued connection requests to be lost. Therefore, the connection pool manager may delay implementation of the configuration change request until the number of connection requests pending in the wait queue is less than or equal to the number of wait queue entries indicated by the configuration change request.
  • FIG. 7 is a flowchart illustrating the processing of a request for a resource from a dynamically configurable resource pool according to one embodiment.
  • the main unit may determine 710 whether a resource is available in the pool. If a resource is available, the main unit may assign 720 the resource to the requester. If no resource is available, the wait queue unit may place 730 the request for a resource on the wait queue and monitor 740 resource usage. In response to the return of a resource to the pool 750 , the wait queue unit may remove a queued request for resource from the wait queue and assign 720 the returned resource to the requestor.
  • An exemplary resource request may be a request to a dynamically configurable connection pool for a connection to a backend system.
  • FIG. 8 is a flowchart illustrating the processing of a request for a connection according to one embodiment.
  • the main unit may determine 805 if a connection is available (e.g. not currently assigned to a requester) in the pool.
  • different connection polls may be provided for connections to different backend resources and the request for a connection may be made to the appropriate pool.
  • the main unit may assign 820 the connection to the requester. Furthermore, if an unassigned connection does not exit in the pool, the main unit may compare 810 the current number of connections in the pool to the maximum number of connections that may be in the pool. If the current pool size is less than the maximum pool size, then the main unit may establish 815 a connection and assign 820 the connection to the requestor. When a connection is assigned to a requester, the main unit may initiate a timer to monitor the total time the connection is assigned to the requestor 825 . The expiration of this timer may prompt the main unit to return 835 the connection to the pool as available for reassignment.
  • the wait queue unit may place the request for connection on the wait queue 840 , start a timer to monitor the amount of time the request is resident on the wait queue 845 , and monitor connection usage for the return of connections to the pool 850 .
  • the connection pool manager may once again determine if an unassigned connection exists in the pool to satisfy a pending request. In this way connection requests for which no connection is immediately available may be delayed until a connection becomes available rather than being refused. If the maximum wait time is exceeded before a connection can be assigned to a requester, the connection request may be dropped 865 .
  • Requests for resource pool statistics may include requests for current statistics and requests for cumulative statistics.
  • FIG. 9 is a flowchart illustrating the processing of a request for dynamically configurable resource pool statistics according to one embodiment.
  • Current statistics may include, for example, number of resources in the pool, number of resources in use, and number of resource requests on the wait queue.
  • the main unit may determine 910 whether the request is a request to view current statistics and if so, the main unit my respond by retuning 920 values for the requested statistics to the requester.
  • Cumulative statistics requests may be handled by the statistics unit of the connection pool manager.
  • the statistics unit may store 960 the current value of the statistic in a separate location and monitor changes in the statistic.
  • the statistics logic may determine if the new value is greater than the stored value for the statistic 940 . If the new value is greater than the stored value, the statistics unit may store the new value of the statistic.
  • the statistics unit may provide the stored value 920 in response to a request to view cumulative statistics 930 .
  • the statistics unit may initialize a counter associated with the event 960 and monitor the occurrence of the event. Upon an occurrence of the event the statistics unit may increment the counter associated with the event. The statistics unit may provide the counter value 920 in response to a request for cumulative statistics. In response to a request to terminate 970 one or more cumulative statistics, the statistics unit may stop accumulating 980 data needed to calculate the one or more cumulative statistics. If the request for statistics is of an unsupported type or contains invalid parameters, an error may be reported to the requestor 990 .
  • cumulative statistics may include, for example, peak values for total connections in the pool, total connections in use, and wait queue size along with total number of cache hits, cache misses, connection requests, connections dropped, connections obtained after wait, connections dropped after wait, connections reclaimed, and connections dropped after idle time. Peak values may be the highest values that one or more parameters reach during the time interval from which accumulation begins until the time at which the cumulative statistics are requested. Cache hits may measure the number of requests for connections for which a connection is available in the pool. Likewise, cache misses may measure requests for connections for which a connection is not available in the pool. Connections dropped may be a cumulative measure of connection requests that could not be satisfied for any reason.
  • Connections obtained after wait may be a cumulative measure of connection requests for which no connection is available at the time the request is received and further, the connection pool is at its maximum size so that the request is added to the wait queue. Subsequently, before the wait queue timer associated with this request expires, either a connection is returned to the pool, or the pool size falls below the maximum pool size allowing the establishment of a connection. In either case a connection is assigned to the requestor after the request has been resident in the wait queue. Connections reclaimed may be a cumulative measure of connections assigned to a requester for which the connection timer expires and the connection pool manager returns to the pool for reassignment. Connections dropped after idle time may be a cumulative measure of connections that are returned to the pool after the expiration of the connection idle timer.
  • a dynamically configurable resource pool may be a component of a multi-threaded application.
  • the components of the resource pool may be locked by a thread in response to that thread issuing a request for service to the resource pool. For example, a thread A may issue a request for service to the resource pool, and concurrently a thread B may also issue a request for service to the resource pool.
  • Thread A If the resource pool manager were configured to be locked as a unit, the request issued by thread A would lock the resource pool while it was being serviced. Thread B would attempt to lock the resource pool for its own service request, but would have to wait until the pool finishes servicing the request of thread A to obtain the lock.
  • the main unit, the wait queue unit, and the statistics unit may be configured to be locked independently. This may allow the resource pool manager to handle multiple, concurrent requests for service.
  • thread A may issue a resource request and lock the main unit and its associated resources.
  • thread B may issue a cumulative statistics request and lock the statistics unit and its associated resources. Because the main unit and statistics unit may be locked independently, the two service requests can be fulfilled concurrently. Similarly, a request for cumulative statistics may be serviced concurrently with a request for current statistics, thus system performance may be improved.
  • FIG. 10 illustrates one embodiment of a computer system 1000 that may include a dynamically configurable resource pool 1005 .
  • Computer system 1000 may include many different components such as memory 1010 , a central processing unit (CPU) or processor 1020 , and an input/output (I/O) interface 1025 .
  • Interconnect 1015 is relied upon to communicate data from one component to another.
  • interconnect 1015 may be a point-to-point interconnect, a shared bus, a combination of point-to-point interconnects and one or more buses, and/or a bus hierarchy including a system bus, CPU bus, memory bus and I/O buses such as a peripheral component interconnect (PCI) bus.
  • PCI peripheral component interconnect
  • the computer system 1000 preferably includes a memory medium on which computer programs according to various embodiments may be stored.
  • the term “memory medium may include an installation medium, e.g., a CD-ROM, or floppy disk; a computer system memory such as DRAM, SRAM, EDO DRAM, SDRAM, DDR SDRAM, Rambus RAM, etc., or a non-volatile memory such as a magnetic media, e.g., a hard drive 1030 , or optical storage.
  • the memory medium may include other types of memory as well, or combinations thereof.
  • the memory medium may be located in a first computer in which the programs are executed, or may be located in a second different computer, which connects to the first computer over a network. In the latter instance, the second computer provides the program instructions to the first computer for execution.
  • the computer system 1000 may take various forms, including a personal computer system, mainframe computer system, workstation, network appliance, Internet appliance, personal digital assistant (PDA), television system or other device.
  • the term “computer system” can be broadly defined to encompass any device having a processor, which executes instructions from a memory medium.
  • the memory medium preferably stores a software program or programs for event-triggered transaction processing as described herein.
  • the software program(s) may be implemented in any of various ways, including procedure-based techniques, component-based techniques, and/or object-oriented techniques, among others.
  • the software program may be implemented using ActiveX controls, C++ objects, JavaBeans, Microsoft Foundation Classes (MFC), or other technologies or methodologies, as desired.
  • MFC Microsoft Foundation Classes
  • Memory 1010 may store program instructions accessed by the CPU 1020 .
  • instructions and data implementing a dynamically configurable resource pool 1005 may be stored in memory 1010 .
  • Computer system 1000 may further include other software and hardware components, such as an input/output (I/O) interface 1025 , that may be coupled to various other components and memory 1010 .
  • the CPU 1020 may acquire instructions and/or data through the I/O interface 1025 .
  • the CPU 1020 may also be coupled to one or more I/O components.
  • I/O components may include a hard disk drive 1030 , a network adapter 1035 , a display adapter 1040 and/or a removable storage adapter 1045 . Some components 1030 to 1045 may be coupled to the I/O interface 1025 .
  • the computer system 1000 may include one or more of a particular type of component.
  • the computer system 1000 may include one or more components coupled to the system through a component other than the I/O interface 1025 .
  • Some computer systems may include additional and/or other components than shown in FIG. 10 such as application software (e.g., stored in memory 1010 ), other CPUs, video monitors or other displays, track balls, mice, keyboards, printers, plotters, scanners, or other types of I/O devices for use with computer system 1000 .
  • a carrier medium may include storage media or memory media such as magnetic or optical media, e.g., disk or CD-ROM, volatile or non-volatile media such as RAM (e.g. SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc. as well as transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as network and/or a wireless link.
  • storage media or memory media such as magnetic or optical media, e.g., disk or CD-ROM, volatile or non-volatile media such as RAM (e.g. SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc.
  • RAM e.g. SDRAM, DDR SDRAM, RDRAM, SRAM, etc.
  • ROM etc.
  • transmission media or signals such as electrical, electromagnetic, or digital signals

Abstract

A dynamically configurable resource pool may provide a pool of computing resource for use in a computing system or application, such as a connection pool or a thread pool for server systems such as application and web server systems. In one embodiment, a server may include a resource pool configured to provide a plurality of computing resources. Other components in the server may be configured to request use of one of the computing resources from the connection pool. The resource pool may include a resource pool manager configured to service requests for the computing resources. The resource pool manager may manage configuration of the resource pool. The resource pool manager may also be configured to receive a configuration change request to change the configuration of the resource pool while the resource pool is available for use.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to computer systems, and more particularly to resource pool management in computer systems.
2. Description of the Related Art
A three-tier application is an application that may be organized into three major parts, each of which may be distributed within a networked computer system. The three parts (tiers) may include: one or more clients, one or more servers, and one or more back-end systems (e.g. databases) along with their management functions. In the first tier, a client may be a program running on a user's computer that includes a graphical user interface, application-specific entry forms, and/or interactive windows for interacting with an application. An exemplary client may be a web browser that allows a user to access the Internet. In the second tier, a server may be a program such as an application server that contains the business logic for an application such as banking transactions or purchasing merchandise for the user of a client. The server may be running on one or more computers.
A plurality of client systems may connect to one or more servers as components of a network. An exemplary network of this type is the Internet. Clients may submit requests for data to servers, and if the requested data is available within the server, the server may respond by returning the requested data to the client. When the data requested by a client is not available within a server, a component of the server (requester) may request the data on the behalf of the client from a backend system. This request may require the establishment of a connection between the server and the backend system. A connection is a set of computer system resources and parameters, which allow communications between two or more entities within the system. For example, computers A and B may be components of a computer system, which includes several computers linked together by a communications network. An application running on computer A may reach a point in its execution where it requires data, which is resident on computer B. At this point the application will request that a connection be established between computers A and B whereby, it may obtain the necessary data. In general, some agent within computer A may allocate resources, such as computer memory and buffers, to support the communication and send a message to computer B informing it that a connection is desired. Upon receiving this message, an agent in computer B may allocate resources in computer B to support the communication. At this point a negotiation may take place between the agents in computers A and B, which may include the exchange of several messages. This negotiation may result in a set of parameters, which govern the communication between A and B. These parameters may include: how much data may be sent at one time, what format the data may be in, what to do if an errors during transmission, etc. Depending upon the complexity of the computer system, the negotiations to establish a connection may consume a significant amount of time.
The third tier of a three-tier application may include one or more backend systems. A backend system may include one or more databases and programs that facilitate access to the data they contain. In some implementations of three-tier applications, the number of clients initiating requests for data, and therefore the number of data requests generated may be quite large. Correspondingly, the number of connections between the server and the backend systems needed to fulfill these requests may be quite large. The overhead associated with establishing a connection between the server and backend system may constitute a significant portion of the response time for a request from a client. To reduce the overhead associated with establishing new connections, a server may maintain a pool of pre-established connection, e.g. a connection pool. By the incorporation of a connection pool, the server may be able to significantly reduce response times. When an application component receives a request for data from a client, it may first determine on what backend system and/or in which database the requested information resides. It may then send a request for a connection to the specific backend system to the connection pool. A connection pool manager may then determine if a connection to the specified backend system is available. If such a connection is available, the connection pool manager may supply the connection to the requestor and the requester may then be able to obtain the needed data for the client without incurring the overhead of establishing the connection.
Management of a connection pool may involve an attempt to balance the capacity to fulfill requests for connections with limitations on server resources that may be allocated for the connection pool. It may be desirable to have sufficient connections in the connection pool such that all requests for connections may be fulfilled without the need to establish any new connections. In complex systems where the number of backend entities is great, the number of connections and computer resources needed to support them may exceed the total resources available to the server in which the connection pool is running. Therefore, it may be necessary to limit the number of connections in the connection pool. Given a limitation on resources that may be devoted to the connection pool, it may be desirable to implement a set of connections corresponding to the most frequent connection requests received by the connection pool. It may be that the frequency distribution of requests for connections varies as a function of parameters such as time of day, so that a connection pool containing a set of connections optimized to meet the connection demands of morning clients may be quite different from a set optimized for evening clients.
In order to achieve higher levels of economy of server resources, it may be necessary to be able to change (reconfigure) the connection pool to meet changing demands for connections. Changing the configuration of the connection pool (e.g. to change the pool size or other parameters) may require destroying the pool and reinitializing it with new parameters. This procedure may also entail rebooting the computer on which the connection pool resides. Therefore, reconfiguring a connection pool may require the destruction of all connections within the pool at a minimum. For complex systems with a large number of clients, there may be no time at which one or more connections are not in use. Reconfiguring the connection pool may disrupt service to any clients that are currently using connections. This disruption of client services may be of significant duration, particularly if a reboot of the application server is required.
SUMMARY OF THE INVENTION
Embodiments of a dynamically configurable resource pool are described. In some embodiments, the dynamically configurable resource pool may provide a pool of computing resource for use in a computing system or application, such as a connection pool or a thread pool for server systems such as application and web server systems.
In one embodiment, a server may include a resource pool configured to provide a plurality of computing resources. Other components in the server may be configured to request use of one of the computing resources from the connection pool. The resource pool may include a resource pool manager configured to service requests for the computing resources. The resource pool manager may manage configuration of the resource pool. The resource pool manager may also be configured to receive a configuration change request to change the configuration of the resource pool while the resource pool is available for use. The resource pool manager may determine if the resource is at a safe point for the configuration change request to be implemented. For example, the resource pool manager may dynamically evaluate the configuration change request based on current usage of the resource pool to determine the impact of implementation of the requested configuration change on the current usage of the resource pool. If the resource pool manager determines that the resource is not at a safe point for the configuration change request to be implemented, the resource pool manager may delay implementation of the requested configuration change until the resource pool is at a safe point for the configuration change to take effect. For example, if implementation of the requested configuration change would disrupt usage of the resource pool, the resource pool manager may delay implementation of the requested configuration change until the configuration change can be implemented without disrupting usage of the resource pool. Once the resource pool is at a safe point for the configuration change to take effect, the resource pool manager may asynchronously change the resource pool configuration while the resource pool is still available for use.
In one embodiment, a dynamically configurable resource pool may be a connection pool that services requests for connections to a backend system resource. Upon receiving a request, the main unit may determine if a connection is available in the pool. Different dynamically configurable resource pools may be provided for different types of connections, e.g. to different backend resources. If an unassigned connection exists in the requested pool, the main unit may assign the connection to the requester. Furthermore, if an unassigned connection does not exist in the pool, and the current pool size is less than the maximum pool size, then the main unit may establish a connection and assign the connection to the requester. If an unassigned connection does not exit in the pool, and the current pool size is equal to the maximum pool size, then the wait queue unit may place the request for connection on the wait queue and monitor connection usage for the return of connections to the pool. When a connection is returned to the connection pool, the connection pool manager may once again determine if an unassigned connection exists in the pool to satisfy a pending request.
In one embodiment, the connection pool manager may be segmented into a main unit for responding configuration requests, connection requests, and requests for current pool usage statistics; a wait queue unit for managing connection requests for which a connection is not currently available, and a statistics unit for responding to requests for cumulative pool usage statistics. The main, wait queue, and statistics units may be configured to be locked separately in order to synchronize concurrent requests for service to the connection pool. This separate locking capability of connection pool management components may increase system performance in a multi-threaded environment. For example, a thread A may issue a request for service to the connection pool, and concurrently a thread B may also issue a request for service to the connection pool. If the connection pool were configured to be locked as a unit, the request issued by thread A would lock the connection pool while it is being serviced. Thread B would attempt to lock the connection pool for it's own service request, but would have to wait until the pool finishes servicing the request of thread A to obtain the lock. The capability to lock connection pool manager components independently may allow the connection pool to handle multiple requests for service concurrently. Referring to the previous example, thread A may issue a connection request and lock the main unit and its associated resources. Concurrently, thread B may issue a cumulative statistics request and lock the statistics unit and its associated resources. Because the main unit and statistics unit may be locked independently, the two service requests can be fulfilled concurrently thus improving system performance.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a server including a dynamically configurable resource pool, according to one embodiment;
FIG. 2 illustrates an embodiment of a dynamically configurable connection pool;
FIG. 3 illustrates one embodiment of a dynamically configurable connection pool as a component of an application server in a three-tier application;
FIG. 4 is a flowchart illustrating the initial processing of a service request by the main unit according to one embodiment;
FIG. 5 is a flowchart illustrating the processing of a request to change the configuration of a dynamically configurable resource pool according to one embodiment;
FIG. 6 is a flowchart illustrating the processing of a request to change the maximum number of connections of a dynamically configurable connection pool according to one embodiment;
FIG. 7 is a flowchart illustrating the processing of a request for a resource from a dynamically configurable resource pool according to one embodiment;
FIG. 8 is a flowchart illustrating the processing of a request for a connection from a dynamically configurable connection pool according to one embodiment;
FIG. 9 is a flowchart illustrating the processing of a request for dynamically configurable resource pool statistics according to one embodiment; and
FIG. 10 illustrates one embodiment of a computer system that may include a dynamically configurable resource pool.
While the invention is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the invention is not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.
DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
FIG. 1 illustrates one embodiment of a dynamically configurable resource pool 100 as a component of a server 140. The server 140 may be a program running on a computer system that provides services to other computer programs running on the same or other computer systems. A requestor 110 may be another component of the server 140 that may make use of one or more of the resources 130 managed by the resource pool 100. In order to obtain the required resource 130, the requester 110 sends a request to the resource pool 100. The resource pool manager 120 may service resource requests by supplying requested resources 130 and may manage the return of resources to the pool 100. In one embodiment the resources 130 may be connections to other resources or computer systems, such as a data resource provided by a database resource manager. In such embodiments in which the resources are connections, the dynamically configurable resource pool 100 may be referred to as a dynamically configurable connection pool. In another embodiment the resources may be threads such that dynamically configurable resource pool 100 may be referred to as a dynamically configurable thread pool.
The resource pool manager 120 may be capable of altering one or more aspects of the configuration of the resource pool 100 in response to a configuration request. Furthermore, the resource pool manager 120 may be able to alter the configuration of the resource pool 100 while the resources 130 of the pool are available for use, without disrupting this use. Thus, resource pool 100 may be dynamically configurable. In one embodiment, a requestor 110 may generate a request to change the configuration of the resource pool 100. The change may be to reduce the maximum number of resources 130 in the pool 100, for example. Upon receiving a configuration change request, the resource pool manager may determine whether or not the configuration change may be safely implemented at the current time. For, example, upon receiving a request to reduce the maximum number of resources 130 in the pool 100, the resource pool manager 120 may check current statistics on resource pool usage, in particular it may check the total number of resources 130 in use. It may then compare the requested maximum number of resources 130 with the total number of resources currently in use. If the total number of resources 130 currently in use is less than or equal to the requested maximum number of resources, then the resource pool manager 120 may reduce the maximum resource pool size to the requested value without disrupting the current utilization of pool resources 130. If the total number of resources 130 currently in use is greater than the requested maximum number of resources, then the resource pool manager 120 may delay the implementation of the requested reduction in the maximum number of resources in the pool 100 until such time as current resource usage becomes less than or equal to the requested maximum number of resources for the pool thereby avoiding disruption of pool usage.
In one embodiment, the resources 130 managed by a dynamically configurable resource pool 100 may be connections 270. FIG. 2 illustrates a dynamically configurable connection pool 200. A connection 270 may involve computer system resources and parameters, which allow communications between two or more entities within the system. In one embodiment, computers A and B may be components of a computer system, which includes several computers linked together by a communications network. An application running on computer A may reach a point in its execution where it requires data, which is resident on computer B. At this point the application will request that a connection 270 be established between computers A and B whereby, it may obtain the necessary data. In general, some agent within computer A may allocate resources, such as computer memory and buffers, to support the communication and send a message to computer B informing it that a connection 270 is desired. Upon receiving this message, an agent in computer B may allocate resources in computer B to support the communication. At this point a negotiation may take place between the agents in computers A and B, which may include the exchange of several messages. This negotiation may result in a set of parameters, which govern the communication between A and B. These parameters may include: how much data may be sent at one time, what format the data may be in, what to do if an errors during transmission, etc.
Depending upon the complexity of the computer system, the negotiations to establish a connection 270 may consume a significant amount of time. Therefore, if communications between the entities for which a connection 270 is established occur frequently, it may be advantageous to maintain the connection after its immediate use has been completed in order that it may be reused without incurring the overhead associated with reestablishing the connection.
A group of these reusable connections 270 may be managed within a connection pool 200. The connection pool 200 may include the connections 270 themselves along with a connection pool manager 230. The connection pool manager 230 may be responsible for responding to all requests for service received by the connection pool 200. Requests for service received by the connection pool 200 may be grouped into those dealing with the connections 270 themselves, those dealing with statistics of pool usage, and those dealing with the configuration of the pool 200. The connection pool manager 230 may include a main unit 240 for responding to configuration requests, connection requests, and requests for current pool usage statistics.
Configuration requests may include requests to view the pool configuration, requests to change the pool configuration, requests to destroy the pool 200, and requests to flush the pool. In response to a request to view the pool configuration, the main unit 240 may provide one or more values for pool configuration parameters. In response to a request to change the pool configuration, the main unit 240 may employ a dynamic configuration change mechanism to safely change one or more values of pool configuration parameters, as further described below. In response to a request to destroy the pool, the main unit 240 may delete all components of the connection pool 200. In response to a request to flush the connection pool 200, the main unit 240 may destroy the connections 270 currently in the pool and not in use.
Connection requests may include requests to obtain a connection 270 from the connection pool 200 and requests to return a connection to the connection pool. In response to a request to obtain a connection 270, the main unit 240 may assign a connection to the requester 110. In response to a request to return a connection 270 to the pool 200, the main unit 240 may make the connection available in the pool for reassignment.
The main unit 240 may respond to a request for current connection pool statistics by providing current values for one or more connection pool usage parameters. Connection pool usage parameters may include total number of connections in the pool, total number of connections in use, and wait queue size, for example.
The connection pool manager 230 may include a wait queue unit 250 for managing connection requests for which a connection is not currently available. If the main unit 240 is unable to immediately fulfill a request 220 for a connection, it may pass the request to the wait queue unit 250. The wait queue unit 250 may place the request 220 on the wait queue 210. The wait queue unit 250 may monitor connections 270 returned to the connection pool 200. When a connection 270 matching a stored request 220 becomes available, the wait queue unit 250 may assign the connection to the requester 110.
The connection pool manager 230 may include a statistics unit 260 for responding to requests for cumulative pool usage statistics. Requests for cumulative pool usage statistics may include requests to start accumulating data for one or more cumulative statistics, stop accumulating data for one or more cumulative statistics, and view one or more cumulative statistics. In response to a request to start accumulating data for one or more cumulative statistics, the statistics unit 260 may initialize a portion of computer memory to store data associated with the one or more cumulative statistics. In response to a request to stop accumulating data for one or more cumulative statistics, the statistics unit 260 may release that portion of computer memory used to store data associated with the one or more cumulative statistics. In response to a request to view one or more cumulative statistics, the statistics unit 260 may perform any calculations needed to obtain current values for the one or more cumulative statistics and provide those current values to the requester.
FIG. 3 illustrates one embodiment of a dynamically configurable connection pool 300 as a component of an application server 330 in a three-tier application. A three-tier application is an application that may be organized into three major parts, each of which may be distributed within a networked computer system. The three parts (tiers) may include: one or more clients 360, one or more servers 330 (e.g. web servers and/or application servers), and one or more backend systems 370 which may contain one or more databases 380 along with their management functions. In the first tier, a client 360 may be a program running on a user's computer that includes a graphical user interface, application-specific entry forms, and/or interactive windows for interacting with an application. An exemplary client 360 may be a web browser that allows a user to access the Internet.
In the second tier, a server 330 may be a program that provides the application logic, such as a service for banking transactions or purchasing merchandise for the user of a client 360. The server 330 may be running on one or more computers. One or more client systems may be connected to one or more server systems as components of a network 350. An exemplary network 350 of this type is the Internet. Clients 360 may submit requests to server 330. Satisfying a request may involve accessing certain data. When data accessed in response to a client request is not available within server 330, a component of the server (requester) 340 may request the data from a backend system 370. The requester may be a component of the application, such as an enterprise Java bean (EJB). This request may require the establishment of a connection 310 between the server 330 and the backend system 370. The backend system 370 may include one or more databases 380 and programs that facilitate access to the data they contain. A connection between the server 330 and a backend database 380 may be referred to as a database connection.
The third tier of a three-tier application may include one or more backend systems 370. In some implementations of three-tier applications, the number of clients 360 initiating requests for data, and therefore the number data requests themselves may be quite large. Correspondingly, the number of connections 320 between the server 330 and the backend systems 370 needed to fulfill these requests may be quite large. The overhead associated with establishing a connection 320 between the server 330 and backend system 370 may constitute a significant portion of the response time for a request from a client 360. By the incorporation of a dynamically configurable connection pool 300, the server 330 may be able to significantly reduce response times.
When an application component receives a request from a client, it may determine on what backend system 370 and/or in which database 380 the data needed to satisfy the request resides. It may then send a request for a connection with the specific backend system 370 to the dynamically configurable connection pool 300. The connection pool manager 310 may then determine if a connection 320,to the specified backend system 370 is available. If such a connection 320 is available, the connection pool manager 310 may supply the connection to the requestor 340 and the requestor may then be able to obtain the needed data for the client 360 without incurring the overhead of establishing the connection. To efficiently meet changing demands for connections, the configuration (size, max wait time, etc.) of the connection pool 300 may be altered while one or more connections are in use. This dynamically configurable aspect of the connection pool 300 is described in greater detail below. In one embodiment, different dynamically configurable connection pools 300 may be provided for different types of connections.
Although an embodiment has been described in which a dynamically configurable connection pool is implemented within an application server, other embodiments may include a dynamically configurable pool(s) for other types of computing resources within other types of systems.
FIG. 4 is a flowchart illustrating the initial processing of a service request by a main unit of a resource pool manager, according to one embodiment. The main unit of the resource pool manager may receive a request for service 410 from a requestor. In response to receiving a request for service, the main unit may determine whether the request is a resource request 430, a statistics request 440, or a configuration request 420. A resource request may be a request for a pooled resource such a thread or a connections to a database, or a request to release previously obtained resource. Statistics requests may include requests for current resource pool usage statistics, requests to begin accumulating data for one or more cumulative statistics, requests to provide current values for one or more cumulative statistics, and requests to discontinue the accumulation of data for one or more cumulative statistics.
In an embodiment in which the resource pool is a connection pool, configuration requests may include, for example, requests for current values of the configuration parameters of the connection pool, requests to change the value of one or more configuration parameters of the connection pool, requests to flush the connection pool, and requests to destroy the connection pool. Connection pool configuration parameters may include: maximum wait queue size, maximum time in wait queue, initial connection pool size, maximum connection pool size, minimum connection pool size, connection reclaim time, and maximum connection idle time. The maximum wait queue size may determine the maximum number of requests for connection that may reside in the wait queue. The maximum time in wait queue may be used to determine how long a request for connection may reside in the wait queue before dropping the request and/or informing the requestor that a connection cannot be provided. The initial connection pool size may be used to determine the number of connections that the connection pool manager will generate upon initialization of the connection pool. The maximum pool size may be used to determine how many additional connections the connection pool manager may generate in response to connection requests above the number specified by the initial connection pool size parameter. The minimum connection pool size may be used to determine the number of connections maintained in the pool. Minimum connection pool size may be maintained once the pool reaches the minimum size. The connection reclaim time parameter may be used to determine the maximum length of time that a connection may be assigned to a requester. The maximum idle connection time parameter may be used to determine the maximum length of time that a connection, which is not in use, may stay in the pool for reassignment. This criteria may be applied for connections above the minimum connection pool size. Requests for service that do not correspond to one of the aforementioned types, or that contain invalid parameters may cause the connection pool manager to return an error message 450 to the requester without further processing.
FIG. 5 is a flowchart illustrating the processing of a request to change the configuration of a dynamically configurable resource pool according to one embodiment. Upon receiving a configuration change request 500, the main unit may determine 510 whether implementing the requested change would cause a disruption of the current pool usage. If the implementation of the requested configuration change would not disrupt current pool usage, the main unit may implement 520 the requested new configuration while current resource utilization continues undisturbed. If the implementation of the requested configuration change would disrupt current pool usage, the main unit may hold 530 the requested configuration change and asynchronously update 540 the configuration, when the resource pool reaches a safe point. The resource pool may be at a safe point when implementation of the held configuration change would cause no disruption of the current pool usage. Thus, changes to the resource pool configuration may be made dynamically, without disrupting service to requestors. Other configuration requests, such as requests to view the current configuration of the resource pool, to flush the resource pool, or to destroy the resource pool, may be implemented without performing a safe point check as described above for configuration change requests.
An exemplary configuration request may be a request to change the maximum number of connections resident in a dynamically configurable connection pool. FIG. 6 is a flowchart illustrating the processing of a request to change the maximum number of connections according to one embodiment. Upon receiving the request 600, the main unit may compare the requested maximum number of connections with the number of connection currently in use 610 to determine if implementing the requested change would cause the destruction of any connections currently assigned to requesters.
If the requested maximum number of connections is greater than, or equal to the number of connections currently in use, then the maximum number of connections parameter may be changed to the requested maximum number of connections value 620 while all currently assigned connections continue to function without disruption.
If the requested maximum number of connections is less than the number of connections currently in use, then immediate implementation of the requested change may result in the destruction of one or more currently assigned connections and disruption of service to the requesters to which those connections are assigned. In order to avoid any disruption of service to requesters, the connection pool manager may delay the implementation of the requested change, store the change request 630, and begin monitoring changes in connection usage 640. When there is a decrease in the number of connections currently in use 650, the connection pool manager may once again determine whether the requested maximum number of connections is greater than, or equal to the number of connections currently in use. In this way changes to the connection pool configuration parameters may be made while one or more connections are in use, without disruption of service to requesters.
Similarly, in the case where a configuration change request may be a request to change the number of entries in the wait queue, the main unit may determine whether the requested number of entries for the wait queue is greater than or equal to the current size of the wait queue. If the requested wait queue size is less than the current number of connection requests on the wait queue, implementation of the configuration change would cause one or more queued connection requests to be lost. Therefore, the connection pool manager may delay implementation of the configuration change request until the number of connection requests pending in the wait queue is less than or equal to the number of wait queue entries indicated by the configuration change request.
FIG. 7 is a flowchart illustrating the processing of a request for a resource from a dynamically configurable resource pool according to one embodiment. Upon receiving a request for a connection 700, the main unit may determine 710 whether a resource is available in the pool. If a resource is available, the main unit may assign 720 the resource to the requester. If no resource is available, the wait queue unit may place 730 the request for a resource on the wait queue and monitor 740 resource usage. In response to the return of a resource to the pool 750, the wait queue unit may remove a queued request for resource from the wait queue and assign 720 the returned resource to the requestor.
An exemplary resource request may be a request to a dynamically configurable connection pool for a connection to a backend system. FIG. 8 is a flowchart illustrating the processing of a request for a connection according to one embodiment. Upon receiving a request for a connection 800, the main unit may determine 805 if a connection is available (e.g. not currently assigned to a requester) in the pool. In one embodiment, different connection polls may be provided for connections to different backend resources and the request for a connection may be made to the appropriate pool.
If an unassigned connection exists in the pool, the main unit may assign 820 the connection to the requester. Furthermore, if an unassigned connection does not exit in the pool, the main unit may compare 810 the current number of connections in the pool to the maximum number of connections that may be in the pool. If the current pool size is less than the maximum pool size, then the main unit may establish 815 a connection and assign 820 the connection to the requestor. When a connection is assigned to a requester, the main unit may initiate a timer to monitor the total time the connection is assigned to the requestor 825. The expiration of this timer may prompt the main unit to return 835 the connection to the pool as available for reassignment.
If an unassigned connection does not exist in the pool, and the current pool size is equal to the maximum pool size, then the wait queue unit may place the request for connection on the wait queue 840, start a timer to monitor the amount of time the request is resident on the wait queue 845, and monitor connection usage for the return of connections to the pool 850. When a connection is returned to the connection pool 855, the connection pool manager may once again determine if an unassigned connection exists in the pool to satisfy a pending request. In this way connection requests for which no connection is immediately available may be delayed until a connection becomes available rather than being refused. If the maximum wait time is exceeded before a connection can be assigned to a requester, the connection request may be dropped 865.
Requests for resource pool statistics may include requests for current statistics and requests for cumulative statistics. FIG. 9 is a flowchart illustrating the processing of a request for dynamically configurable resource pool statistics according to one embodiment. Current statistics may include, for example, number of resources in the pool, number of resources in use, and number of resource requests on the wait queue. Upon receiving a request for statistics 900, the main unit may determine 910 whether the request is a request to view current statistics and if so, the main unit my respond by retuning 920 values for the requested statistics to the requester.
Cumulative statistics requests may be handled by the statistics unit of the connection pool manager. In response to a request to initiate 950 the accumulation of a peak value for a statistic, the statistics unit may store 960 the current value of the statistic in a separate location and monitor changes in the statistic. Upon the occurrence of a change in the statistic, the statistics logic may determine if the new value is greater than the stored value for the statistic 940. If the new value is greater than the stored value, the statistics unit may store the new value of the statistic. The statistics unit may provide the stored value 920 in response to a request to view cumulative statistics 930. In response to a request to initiate 950 the accumulation of a total value for occurrences of an event, the statistics unit may initialize a counter associated with the event 960 and monitor the occurrence of the event. Upon an occurrence of the event the statistics unit may increment the counter associated with the event. The statistics unit may provide the counter value 920 in response to a request for cumulative statistics. In response to a request to terminate 970 one or more cumulative statistics, the statistics unit may stop accumulating 980 data needed to calculate the one or more cumulative statistics. If the request for statistics is of an unsupported type or contains invalid parameters, an error may be reported to the requestor 990.
In the case of a dynamically configurable connection pool, cumulative statistics may include, for example, peak values for total connections in the pool, total connections in use, and wait queue size along with total number of cache hits, cache misses, connection requests, connections dropped, connections obtained after wait, connections dropped after wait, connections reclaimed, and connections dropped after idle time. Peak values may be the highest values that one or more parameters reach during the time interval from which accumulation begins until the time at which the cumulative statistics are requested. Cache hits may measure the number of requests for connections for which a connection is available in the pool. Likewise, cache misses may measure requests for connections for which a connection is not available in the pool. Connections dropped may be a cumulative measure of connection requests that could not be satisfied for any reason. Connections obtained after wait may be a cumulative measure of connection requests for which no connection is available at the time the request is received and further, the connection pool is at its maximum size so that the request is added to the wait queue. Subsequently, before the wait queue timer associated with this request expires, either a connection is returned to the pool, or the pool size falls below the maximum pool size allowing the establishment of a connection. In either case a connection is assigned to the requestor after the request has been resident in the wait queue. Connections reclaimed may be a cumulative measure of connections assigned to a requester for which the connection timer expires and the connection pool manager returns to the pool for reassignment. Connections dropped after idle time may be a cumulative measure of connections that are returned to the pool after the expiration of the connection idle timer.
In one embodiment a dynamically configurable resource pool may be a component of a multi-threaded application. In order to maintain synchronization among a plurality of threads within the application, the components of the resource pool may be locked by a thread in response to that thread issuing a request for service to the resource pool. For example, a thread A may issue a request for service to the resource pool, and concurrently a thread B may also issue a request for service to the resource pool.
If the resource pool manager were configured to be locked as a unit, the request issued by thread A would lock the resource pool while it was being serviced. Thread B would attempt to lock the resource pool for its own service request, but would have to wait until the pool finishes servicing the request of thread A to obtain the lock.
To improve system performance, the main unit, the wait queue unit, and the statistics unit may be configured to be locked independently. This may allow the resource pool manager to handle multiple, concurrent requests for service. Referring to the previous example, thread A may issue a resource request and lock the main unit and its associated resources. Concurrently, thread B may issue a cumulative statistics request and lock the statistics unit and its associated resources. Because the main unit and statistics unit may be locked independently, the two service requests can be fulfilled concurrently. Similarly, a request for cumulative statistics may be serviced concurrently with a request for current statistics, thus system performance may be improved.
FIG. 10 illustrates one embodiment of a computer system 1000 that may include a dynamically configurable resource pool 1005. Computer system 1000 may include many different components such as memory 1010, a central processing unit (CPU) or processor 1020, and an input/output (I/O) interface 1025. Interconnect 1015 is relied upon to communicate data from one component to another. For example, interconnect 1015 may be a point-to-point interconnect, a shared bus, a combination of point-to-point interconnects and one or more buses, and/or a bus hierarchy including a system bus, CPU bus, memory bus and I/O buses such as a peripheral component interconnect (PCI) bus.
The computer system 1000 preferably includes a memory medium on which computer programs according to various embodiments may be stored. The term “memory medium may include an installation medium, e.g., a CD-ROM, or floppy disk; a computer system memory such as DRAM, SRAM, EDO DRAM, SDRAM, DDR SDRAM, Rambus RAM, etc., or a non-volatile memory such as a magnetic media, e.g., a hard drive 1030, or optical storage. The memory medium may include other types of memory as well, or combinations thereof. In addition, the memory medium may be located in a first computer in which the programs are executed, or may be located in a second different computer, which connects to the first computer over a network. In the latter instance, the second computer provides the program instructions to the first computer for execution.
Also, the computer system 1000 may take various forms, including a personal computer system, mainframe computer system, workstation, network appliance, Internet appliance, personal digital assistant (PDA), television system or other device. In general, the term “computer system” can be broadly defined to encompass any device having a processor, which executes instructions from a memory medium. The memory medium preferably stores a software program or programs for event-triggered transaction processing as described herein. The software program(s) may be implemented in any of various ways, including procedure-based techniques, component-based techniques, and/or object-oriented techniques, among others. For example, the software program may be implemented using ActiveX controls, C++ objects, JavaBeans, Microsoft Foundation Classes (MFC), or other technologies or methodologies, as desired.
Memory 1010 may store program instructions accessed by the CPU 1020. For example, instructions and data implementing a dynamically configurable resource pool 1005 may be stored in memory 1010.
Computer system 1000 may further include other software and hardware components, such as an input/output (I/O) interface 1025, that may be coupled to various other components and memory 1010. The CPU 1020 may acquire instructions and/or data through the I/O interface 1025. Through the I/O interface 1025, the CPU 1020 may also be coupled to one or more I/O components. As illustrated, I/O components may include a hard disk drive 1030, a network adapter 1035, a display adapter 1040 and/or a removable storage adapter 1045. Some components 1030 to 1045 may be coupled to the I/O interface 1025. In addition, the computer system 1000 may include one or more of a particular type of component. The computer system 1000 may include one or more components coupled to the system through a component other than the I/O interface 1025. Some computer systems may include additional and/or other components than shown in FIG. 10 such as application software (e.g., stored in memory 1010), other CPUs, video monitors or other displays, track balls, mice, keyboards, printers, plotters, scanners, or other types of I/O devices for use with computer system 1000.
CONCLUSION
Various embodiments may further include receiving, sending or storing instructions and/or data implemented in accordance with the foregoing description upon a carrier medium. Generally speaking, a carrier medium may include storage media or memory media such as magnetic or optical media, e.g., disk or CD-ROM, volatile or non-volatile media such as RAM (e.g. SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc. as well as transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as network and/or a wireless link.
The various methods as illustrated in the Figures and described herein represent exemplary embodiments of methods. The methods may be implemented in software, hardware, or a combination thereof. The order of method may be changed, and various elements may be added, reordered, combined, omitted, modified, etc.
Various modifications and changes may be made as would be obvious to a person skilled in the art having the benefit of this disclosure. It is intended that the invention embrace all such modifications and changes and, accordingly, the above description to be regarded in an illustrative rather than a restrictive sense.

Claims (48)

1. A computer system, comprising:
one or more computers, each of which comprises at least a processor and memory;
wherein the one or more computers are configured to implement:
a resource pool configured to provide a plurality of computing resources;
a plurality of requestors, wherein each of the plurality of requestors is configured to submit requests of a first type, wherein a request of the first type comprises a request for use of one of the computing resources from the resource pool, and wherein at least some of the plurality of requestors are further configured to submit requests of a second type, wherein a request of the second type is a configuration change request that comprises a request for a change to the value of a configuration parameter of the resource pool;
wherein the resource pool comprises a resource pool manager configured to service requests for use of the computing resources dependent on availability of the computing resources in the resource pool; and
wherein the resource pool manager is further configured to manage configuration of the resource pool, wherein in managing configuration of the resource pool the resource pool manager is configured to:
receive a configuration change request from one of the plurality of requestors, wherein the configuration change request comprises a request to change the value of a configuration parameter of the resource pool while the resource pool is available for use;
in response to said receiving the configuration change request, dynamically evaluate the configuration change request based on current usage of the resource pool to determine the impact of implementation of the requested change to the configuration parameter on the current usage of the resource pool; and
in response to determining that implementation of the requested change to the configuration parameter would disrupt the current usage of the resource pool, delay implementation of the requested change to the configuration parameter until the requested change to the configuration parameter can be implemented without disrupting usage of the resource pool.
2. The system as recited in claim 1, wherein, in response to determining that implementation of the requested change to the configuration parameter would not disrupt the current usage of the resource pool, the resource pool manager is configured to perform the requested change to the configuration parameter for the resource pool while the resource pool is available for use.
3. The system as recited in claim 1, wherein the resource pool comprises a connection pool, and wherein the computing resources comprise connections to one or more backend systems.
4. The system as recited in claim 1, wherein the resource pool comprises a thread pool.
5. The system as recited in claim 3, wherein the one or more backend systems comprise one or more databases, wherein one or more of the connections of the connection pool are database connections.
6. The system as recited in claim 3, wherein the configuration change request comprises a request to change the value of a configuration parameter representing the maximum number of connections for the connection pool.
7. The system as recited in claim 3, wherein the connection pool manager comprises a wait queue, wherein in response to receiving a request for a connection when the connection pool is at a maximum size and none of the connections are available, the connection pool manager is configured to store the request in the wait queue.
8. The system as recited in claim 3, wherein the connection pool manager is further configured to provide statistics on current usage of the connection pool.
9. The system as recited in claim 3, wherein the connection pool manager comprises:
a main unit configured to service connection requests and configuration change requests for the connection pool;
a wait queue unit coupled to the main unit and configured to queue connection requests when the connection pool is at a maximum size and none of the connections are available; and
a statistics unit configured to calculate cumulative usage statistics for the connection pool.
10. The system as recited in claim 6, wherein, in response to determining that implementation of the request to change the value of the configuration parameter representing the maximum number of connections would cause one or more connections currently in use to be lost, the connection pool manager is configured to delay implementation of the request to change the value of the configuration parameter representing the maximum number of connections until the number of connections currently in use is less than or equal to a maximum number of connections indicated in the configuration change request.
11. The system as recited in claim 7, wherein the configuration change request comprises a request to change the value of a configuration parameter representing the number of entries in the wait queue.
12. The system as recited in claim 9, wherein the plurality of requestors execute within a multi-threaded environment, wherein the main unit, the wait queue unit, and the statistics unit are each configured to be locked separately to synchronize concurrent requests to the connection pool.
13. The system as recited in claim 9, wherein the statistics unit is configured to provide one or more of the cumulative usage statistics for the connection pool in response to a cumulative statistic request.
14. The system as recited in claim 11, wherein, in response to determining that implementation of the request to change the value of the configuration parameter representing the number of entries in the wait queue would cause one or more pending connection requests in the wait queue to be lost, the connection pool manager is configured to delay implementation of the request to change the value of the configuration parameter representing the number of entries in the wait queue until the number of connection requests pending in the wait queue is less than or equal to a number of wait queue entries indicated by the configuration change request.
15. The system as recited in claim 13, wherein the statistics unit and main unit are configured to respond concurrently to cumulative statistic requests and connection requests respectively.
16. The system as recited in claim 13, wherein the main unit is configured to provide current statistics for connection pool usage.
17. A method, comprising:
using one or more computers to perform:
initiating a resource pool for providing a plurality of computing resources to a plurality of requestors, wherein each of the plurality of requestors is configured to submit requests of a first type, wherein a request of the first type comprises a request for use of one of the computing resources from the resource pool, and wherein at least some of the plurality of requestors are further configured to submit requests of a second type, wherein a request of the second type is a configuration change request that comprises a request for a change to the value of a configuration parameter of the resource pool;
providing computing resources from the resource pool to the plurality of requestors in response to requests for use of the computing resources of the resource pool dependent on availability of the computing resources in the resource pool;
receiving a configuration change request from one of the plurality of requestors, wherein the configuration change request comprises a request to change the value of a configuration parameter of the resource pool while the resource pool is available for use;
in response to said receiving the configuration change request, dynamically evaluating the configuration change request based on current usage of the resource pool to determine the impact of implementation of the requested change to the configuration parameter on the current usage of the resource pool;
in response to determining that implementation of the requested change to the configuration parameter would disrupt the current usage of the resource pool, delaying implementation of the requested change to the configuration parameter until the requested change to the configuration parameter can be implemented without disrupting usage of the resource pool.
18. The method as recited in claim 17, further comprising using the computer to perform, in response to determining that implementation of the requested change to the configuration parameter would not disrupt the current usage of the resource pool, performing the requested change to the configuration parameter for the resource pool while the resource pool is available for use.
19. The method as recited in claim 17, wherein the resource pool comprises a connection pool, and wherein the computing resources comprise connections to one or more backend systems.
20. The method as recited in claim 19, wherein the one or more backend systems comprise one or more databases, wherein one or more of the connections of the connection pool are database connections.
21. The method as recited in claim 19, wherein the configuration change request comprises a request to change the value of a configuration parameter representing the maximum number of connections for the connection pool.
22. The method as recited in claim 19, wherein the connection pool manager comprises a wait queue, the method further comprising in response to receiving a request for a connection when the connection pool is at a maximum size and none of the connections are available, storing the request in the wait queue.
23. The method as recited in claim 19, further comprising using the computer to perform providing statistics on current usage of the connection pool.
24. The method as recited in claim 19, further comprising using the computer to perform:
a main unit servicing connection requests and configuration change requests for the connection pool;
a wait queue unit coupled to the main unit queuing connection requests when the connection pool is at a maximum size and none of the connections are available; and
a statistics unit calculating cumulative usage statistics for the connection pool.
25. The method as recited in claim 17, wherein the resource pool comprises a thread pool.
26. The method as recited in claim 21, further comprising using the computer to perform, in response to determining that implementation of the request to change the value of the configuration parameter representing the maximum number of connections would cause one or more connections currently in use to be lost, delaying implementation of the request to change the value of the configuration parameter representing the maximum number of connections until the number of connections currently in use is less than or equal to a maximum number of connections indicated in the configuration change request.
27. The method as recited in claim 22, wherein the configuration change request comprises a request to change the value of a configuration parameter representing the number of entries in the wait queue.
28. The method as recited in claim 24, wherein the plurality of requestors execute within a multi-threaded environment, the method further comprising using the computer to perform locking the main unit, the wait queue unit, and the statistics unit separately to synchronize concurrent requests to the connection pool.
29. The method as recited in claim 24, further comprising using the computer to perform providing one or more of the cumulative usage statistics for the connection pool in response to a cumulative statistic request.
30. The method as recited in claim 27, further comprising using the computer to perform, in response to determining that implementation of the request to change the value of the configuration parameter representing the number of entries in the wait queue would cause one or more pending connection requests in the wait queue to be lost, delaying implementation of the request to change the value of the configuration parameter representing the number of entries in the wait queue until the number of connection requests pending in the wait queue is less than or equal to a number of wait queue entries indicated by the configuration change request.
31. The method as recited in claim 29, further comprising using the computer to perform responding concurrently to cumulative statistic requests and connection requests respectively.
32. The method as recited in claim 29, further comprising using the computer to perform providing current statistics for connection pool usage.
33. A non-transitory, tangible, computer-readable storage medium comprising program instructions configured to enable computer operations comprising:
initiating a resource pool for providing a plurality of computing resources to a plurality of requestors, wherein each of the plurality of requestors is configured to submit requests of a first type, wherein a request of the first type comprises a request for use of one of the computing resources from the resource pool, and wherein at least some of the plurality of requestors are further configured to submit requests of a second type, wherein a request of the second type is a configuration change request that comprises a request for a change to the value of a configuration parameter of the resource pool;
providing computing resources from the resource pool to the plurality of requestors in response to requests for use of the computing resources of the resource pool dependent on availability of the computing resources in the resource pool;
receiving a configuration change request from one of the plurality of requestors, wherein the configuration change request comprises a request to change the value of a configuration parameter of the resource pool while the resource pool is available for use;
in response to said receiving the configuration change request, dynamically evaluating the configuration change request based on current usage of the resource pool to determine the impact of implementation of the requested change to the configuration parameter on the current usage of the resource pool; and
in response to determining that implementation of the requested change to the configuration parameter would disrupt the current usage of the resource pool, delaying implementation of the requested change to the configuration parameter until the requested change to the configuration parameter can be implemented without disrupting usage of the resource pool.
34. The non-transitory, tangible, computer-readable storage medium as recited in claim 33, wherein the program instructions are configured to enable computer operations further comprising, in response to determining that implementation of the requested change to the configuration parameter would not disrupt the current usage of the resource pool, performing the requested change to the configuration parameter for the resource pool while the resource pool is available for use.
35. The non-transitory, tangible, computer-readable storage medium as recited in claim 33, wherein the resource pool comprises a connection pool, and wherein the computing resources comprise connections to one or more backend systems.
36. The non-transitory, tangible, computer-readable storage medium as recited in claim 33, wherein the resource pool comprises a thread pool.
37. The non-transitory, tangible, computer-readable storage medium as recited in claim 35, wherein the one or more backend systems comprise one or more databases, wherein one or more of the connections of the connection pool are database connections.
38. The non-transitory, tangible, computer-readable storage medium as recited in claim 35, wherein the configuration change request comprises a request to change the value of a configuration parameter representing the maximum number of connections for the connection pool.
39. The non-transitory, tangible, computer-readable storage medium as recited in claim 35, wherein the connection pool manager comprises a wait queue, wherein the program instructions are configured to enable computer operations further comprising in response to receiving a request for a connection when the connection pool is at a maximum size and none of the connections are available, storing the request in the wait queue.
40. The non-transitory, tangible, computer-readable storage medium as recited in claim 35, wherein the program instructions are configured to enable computer operations further comprising providing statistics on current usage of the connection pool.
41. The non-transitory, tangible, computer-readable storage medium as recited in claim 35, wherein the program instructions are configured to enable computer operations further comprising:
a main unit servicing connection requests and configuration change requests for the connection pool;
a wait queue unit coupled to the main unit queuing connection requests when the connection pool is at a maximum size and none of the connections are available; and
a statistics unit calculating cumulative usage statistics for the connection pool.
42. The non-transitory, tangible, computer-readable storage medium as recited in claim 38, wherein the program instructions are configured to enable computer operations further comprising, in response to determining that implementation of the request to change the value of the configuration parameter representing the maximum number of connections would cause one or more connections currently in use to be lost, delaying implementation of the request to change the value of the configuration parameter representing the maximum number of connections until the number of connections currently in use is less than or equal to a maximum number of connections indicated in the configuration change request.
43. The non-transitory, tangible, computer-readable storage medium as recited in claim 39, wherein the configuration change request comprises a request to change the value of a configuration parameter representing the number of entries in the wait queue.
44. The non-transitory, tangible, computer-readable storage medium as recited in claim 41, wherein the plurality of requestors execute within a multi-threaded environment, wherein the program instructions are configured to enable computer operations further comprising locking the main unit, the wait queue unit, and the statistics unit separately to synchronize concurrent requests to the connection pool.
45. The non-transitory, tangible, computer-readable storage medium as recited in claim 41, wherein the program instructions are configured to enable computer operations further comprising providing one or more of the cumulative usage statistics for the connection pool in response to a cumulative statistic request.
46. The non-transitory, tangible, computer-readable storage medium as recited in claim 43, wherein the program instructions are configured to enable computer operations further comprising, in response to determining that implementation of the request to change the value of the configuration parameter representing the number of entries in the wait queue would cause one or more pending connection requests in the wait queue to be lost, delaying implementation of the request to change the value of the configuration parameter representing the number of entries in the wait queue until the number of connection requests pending in the wait queue is less than or equal to a number of wait queue entries indicated by the configuration change request.
47. The non-transitory, tangible, computer-readable storage medium as recited in claim 45, wherein the program instructions are configured to enable computer operations further comprising responding concurrently to cumulative statistic requests and connection requests respectively.
48. The non-transitory, tangible, computer-readable storage medium as recited in claim 45, wherein the program instructions are configured to enable computer operations further comprising providing current statistics for connection pool usage.
US10/287,324 2002-11-04 2002-11-04 Dynamically configurable resource pool Active 2030-05-04 US8145759B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/287,324 US8145759B2 (en) 2002-11-04 2002-11-04 Dynamically configurable resource pool

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/287,324 US8145759B2 (en) 2002-11-04 2002-11-04 Dynamically configurable resource pool

Publications (2)

Publication Number Publication Date
US20040088413A1 US20040088413A1 (en) 2004-05-06
US8145759B2 true US8145759B2 (en) 2012-03-27

Family

ID=32175671

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/287,324 Active 2030-05-04 US8145759B2 (en) 2002-11-04 2002-11-04 Dynamically configurable resource pool

Country Status (1)

Country Link
US (1) US8145759B2 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100217872A1 (en) * 2009-02-26 2010-08-26 Microsoft Corporation Notification model over a server-to-server connection pool
US9071465B1 (en) * 2010-05-18 2015-06-30 Cellco Partnership Method and system for SMS services and bind scaling
US9197703B2 (en) 2013-06-24 2015-11-24 Hitachi, Ltd. System and method to maximize server resource utilization and performance of metadata operations
US20160065421A1 (en) * 2014-09-03 2016-03-03 International Business Machines Corporation Service level agreement (sla) cognizent self-managing database connection pools in a multi-tenant environment
CN105512127A (en) * 2014-09-24 2016-04-20 阿里巴巴集团控股有限公司 Method and device for distributing database connection
WO2018027028A1 (en) * 2016-08-03 2018-02-08 Oracle International Corporation System and method for efficient repurposing of connections in a multi-tenant database environment
US10848574B2 (en) 2015-06-11 2020-11-24 Microsoft Technology Licensing, Llc Computing resource management system
US10938933B2 (en) * 2019-05-14 2021-03-02 International Business Machines Corporation Managing dynamic configuration-based database connections using a proxy datasource

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1244257A3 (en) * 2001-03-21 2004-02-18 Siemens Aktiengesellschaft Method and apparatus to dynamically control the partiotioning of resources with a dynamic relaese rate
SE0200417D0 (en) * 2002-02-13 2002-02-13 Ericsson Telefon Ab L M A method and apparatus for reconfiguring a server system
US7933983B2 (en) * 2002-12-17 2011-04-26 Hewlett-Packard Development Company, L.P. Method and system for performing load balancing across control planes in a data center
US7165061B2 (en) 2003-01-31 2007-01-16 Sun Microsystems, Inc. Transaction optimization of read-only data sources
US7080126B2 (en) * 2003-02-28 2006-07-18 Bea Systems, Inc. Computer program product for performing resource pool maintenance by maintaining resources in several deques
US7263554B2 (en) * 2003-02-28 2007-08-28 Bea Systems, Inc. Method and system for performing resource pool maintenance by refreshing resources based on the pool resource test
US7287082B1 (en) * 2003-03-03 2007-10-23 Cisco Technology, Inc. System using idle connection metric indicating a value based on connection characteristic for performing connection drop sequence
US7082432B2 (en) 2003-04-24 2006-07-25 Sun Microsystems, Inc. Specifying transaction manager type at various application levels
US7743083B2 (en) 2003-04-24 2010-06-22 Oracle America, Inc. Common transaction manager interface for local and global transactions
US7610305B2 (en) 2003-04-24 2009-10-27 Sun Microsystems, Inc. Simultaneous global transaction and local transaction management in an application server
US8621031B2 (en) * 2003-04-29 2013-12-31 Oracle International Corporation Method and apparatus using connection pools in communication networks
US7263555B2 (en) * 2003-04-30 2007-08-28 International Business Machines Corporation Apparatus and method for dynamic sharing of server network interface resources
US7739252B2 (en) 2003-07-14 2010-06-15 Oracle America, Inc. Read/write lock transaction manager freezing
US7640545B2 (en) 2003-07-14 2009-12-29 Sun Microsytems, Inc. Transaction manager freezing
US7937493B2 (en) * 2003-08-14 2011-05-03 Oracle International Corporation Connection pool use of runtime load balancing service performance advisories
US7953860B2 (en) * 2003-08-14 2011-05-31 Oracle International Corporation Fast reorganization of connections in response to an event in a clustered computing system
US8521875B2 (en) 2003-09-04 2013-08-27 Oracle America, Inc. Identity for data sources
US8041821B2 (en) * 2003-11-26 2011-10-18 International Business Machines Corporation Connection pool management
US8868745B1 (en) * 2003-12-22 2014-10-21 Avaya Inc. Method and system for providing configurable route table limits in a service provider for managing VPN resource usage
US20050172029A1 (en) * 2004-01-29 2005-08-04 International Business Machines Corporation Method and apparatus for managing a connection pool using heuristic information
US7284091B2 (en) * 2004-05-21 2007-10-16 Bea Systems, Inc. Systems and methods for passivation of cached objects in transaction
US7756910B2 (en) * 2004-05-21 2010-07-13 Bea Systems, Inc. Systems and methods for cache and pool initialization on demand
US7543273B2 (en) * 2004-05-21 2009-06-02 Bea Systems, Inc. Systems and methods for dynamic control of cache and pool sizes using a batch scheduler
US8224966B2 (en) * 2004-08-24 2012-07-17 Cisco Technology, Inc. Reproxying an unproxied connection
US8244865B2 (en) * 2004-10-08 2012-08-14 International Business Machines Corporation Method and apparatus for autonomic management of connection pools
US8495145B2 (en) * 2004-10-14 2013-07-23 Intel Corporation Controlling receipt of undesired electronic mail
US9118717B2 (en) * 2005-02-18 2015-08-25 Cisco Technology, Inc. Delayed network protocol proxy for packet inspection in a network
US8656402B2 (en) * 2005-08-26 2014-02-18 International Business Machines Corporation Incremental web container growth to control startup request flooding
US8091089B2 (en) 2005-09-22 2012-01-03 International Business Machines Corporation Apparatus, system, and method for dynamically allocating and adjusting meta-data repository resources for handling concurrent I/O requests to a meta-data repository
US7921084B2 (en) * 2005-10-11 2011-04-05 Oracle International Corporation Timer-driven diagnostic image inhibition for statement cache/connection pool
US20070083526A1 (en) * 2005-10-11 2007-04-12 Rahul Srivastava Monitoring statistics and profile information for JDBC resources
US20070083525A1 (en) * 2005-10-11 2007-04-12 Rahul Srivastava JDBC debugging enhancements
US7784033B2 (en) * 2005-10-11 2010-08-24 Bea Systems, Inc. JDBC monitoring and diagnostics enhancements
US7823136B2 (en) * 2005-10-11 2010-10-26 Bea Systems, Inc. Callbacks for monitoring driver-level statistics
US20070118534A1 (en) * 2005-11-18 2007-05-24 Database-Brothers, Inc. Auditing database end user activity in one to multi-tier web application and local environments
US8943181B2 (en) 2005-11-29 2015-01-27 Ebay Inc. Method and system for reducing connections to a database
US20070136470A1 (en) * 2005-12-08 2007-06-14 Microsoft Corporation Delivery of localized resource over a network
US9953097B2 (en) 2006-03-16 2018-04-24 Ebay Inc. System and method for managing network traffic routing
US7702796B2 (en) * 2006-05-18 2010-04-20 International Business Machines Corporation Recovering a pool of connections
TR200606833A2 (en) * 2006-12-01 2007-10-22 B�Lmed B�Lg�Sayar Ve Yazilim A.�. Method of improving performance in web browser-based applications
US20080201414A1 (en) * 2007-02-15 2008-08-21 Amir Husain Syed M Transferring a Virtual Machine from a Remote Server Computer for Local Execution by a Client Computer
US9043391B2 (en) 2007-02-15 2015-05-26 Citrix Systems, Inc. Capturing and restoring session state of a machine without using memory images
US8713186B2 (en) * 2007-03-13 2014-04-29 Oracle International Corporation Server-side connection resource pooling
US7711822B1 (en) * 2007-03-26 2010-05-04 Oracle America, Inc. Resource management in application servers
US7937611B2 (en) * 2007-04-30 2011-05-03 Sap Ag Method, system and machine accessible medium of a reconnect mechanism in a distributed system (cluster-wide reconnect mechanism)
US9542463B2 (en) * 2007-06-25 2017-01-10 International Business Machines Corporation Method and system for optimizing XA open and XA close operations in a distributed database system
CN101334778B (en) * 2007-06-29 2011-08-03 国际商业机器公司 Management database connecting method and system
US20090063686A1 (en) * 2007-08-30 2009-03-05 Schmidt Brian K Automated service discovery and dynamic connection management
US8539504B2 (en) * 2007-08-30 2013-09-17 International Business Machines Corporation Heterogeneous architecture in pooling management
US8856189B1 (en) * 2010-01-22 2014-10-07 Symantec Corporation Systems and methods for managing connections to process data
US8370422B2 (en) * 2010-02-08 2013-02-05 Raytheon Company Establishing common interest negotiation links between consumers and suppliers to facilitate solving a resource allocation problem
DE102010018021A1 (en) * 2010-04-23 2011-10-27 Giesecke & Devrient Gmbh Method for configuring an application for a terminal
US8606930B1 (en) * 2010-05-21 2013-12-10 Google Inc. Managing connections for a memory constrained proxy server
US9439237B2 (en) * 2011-01-07 2016-09-06 Nokia Technologies Oy Method and apparatus for statistical handling of connections
US8998544B1 (en) 2011-05-20 2015-04-07 Amazon Technologies, Inc. Load balancer
US9124674B2 (en) 2011-12-01 2015-09-01 Futurewei Technologies, Inc. Systems and methods for connection pooling for video streaming in content delivery networks
EP2608029A1 (en) * 2011-12-19 2013-06-26 Siemens Aktiengesellschaft Method and system for managing resources among different clients for an exclusive use
TWI454948B (en) * 2011-12-23 2014-10-01 Felicity Taiwan Corp Operation model system of entering program based on member number and zoning web and ip used to enter zoing web directly and method
TWI459209B (en) * 2012-07-13 2014-11-01 Chao Lieh Chen Cloud sever forming method by dynamically clustering user end devices and system thereof
US9733664B1 (en) * 2013-03-14 2017-08-15 Gamesys Ltd. Method for expiring fault-tolerant timers using distributed locks
US9268798B2 (en) * 2013-04-26 2016-02-23 Oracle International Corporation Support for cloud-based multi-tenant environments using connection labeling
US9600546B2 (en) 2013-06-06 2017-03-21 Oracle International Corporation System and method for marshaling massive database data from native layer to java using linear array
US9720970B2 (en) 2013-06-06 2017-08-01 Oracle International Corporation Efficient storage and retrieval of fragmented data using pseudo linear dynamic byte array
US9747341B2 (en) 2013-06-06 2017-08-29 Oracle International Corporation System and method for providing a shareable global cache for use with a database environment
US9569472B2 (en) 2013-06-06 2017-02-14 Oracle International Corporation System and method for providing a second level connection cache for use with a database environment
US9785687B2 (en) 2013-06-06 2017-10-10 Oracle International Corporation System and method for transparent multi key-value weighted attributed connection using uni-tag connection pools
CN103559204A (en) * 2013-10-08 2014-02-05 北京奇虎科技有限公司 Database operation request processing method, unit and system
US20150341282A1 (en) * 2014-05-22 2015-11-26 Lior Bar-On Context-aware portal connection allocation
CN104038439B (en) * 2014-06-18 2017-05-24 中国工商银行股份有限公司 Message flow control method and system
EP3210396A1 (en) 2014-10-20 2017-08-30 Axon Enterprise, Inc. Systems and methods for distributed control
US10432551B1 (en) * 2015-03-23 2019-10-01 Amazon Technologies, Inc. Network request throttling
CN106302571B (en) * 2015-05-14 2020-07-28 微软技术许可有限责任公司 System and method for maintaining and caching server connections
CN104991817A (en) * 2015-06-25 2015-10-21 国网山东省电力公司 Configurable integration method and system for information system
US10102030B2 (en) 2015-10-26 2018-10-16 International Business Machines Corporation Using 64-bit storage to queue incoming transaction server requests
US10353910B2 (en) * 2016-07-15 2019-07-16 Ebay Inc. Preemptive connection pool adjustments
US11290540B2 (en) 2016-08-12 2022-03-29 Oracle International Corporation System and method for use of server-side connection pool tagging in a multi-tenant environment
US10909211B2 (en) * 2016-08-12 2021-02-02 Oracle International Corporation System and method for control of maximum connections in a connection pool environment
US10229533B2 (en) * 2016-11-03 2019-03-12 Mitsubishi Electric Research Laboratories, Inc. Methods and systems for fast resampling method and apparatus for point cloud data
US10768836B2 (en) * 2017-07-07 2020-09-08 Sap Se Page based data persistency
US10915506B2 (en) 2017-09-06 2021-02-09 Oracle International Corporation System and method for row buffering in a database environment
US10432351B2 (en) * 2017-10-17 2019-10-01 Aagey Holding, LLC Computer network system and method to reduce network latency with a pool of ready connections
TWI668572B (en) * 2018-09-27 2019-08-11 神雲科技股份有限公司 Method for providing device information of cluster storage system
US10698770B1 (en) * 2019-04-10 2020-06-30 Capital One Services, Llc Regionally agnostic in-memory database arrangements with reconnection resiliency
US11616850B1 (en) * 2019-08-23 2023-03-28 Fitbit, Inc. Connection management techniques
US11151150B2 (en) 2019-09-13 2021-10-19 Salesforce.Com, Inc. Adjustable connection pool mechanism
US11636067B2 (en) 2019-10-04 2023-04-25 Salesforce.Com, Inc. Performance measurement mechanism
US11165857B2 (en) * 2019-10-23 2021-11-02 Salesforce.Com, Inc. Connection pool anomaly detection mechanism
US11176155B2 (en) * 2019-12-13 2021-11-16 Paypal, Inc Self-adjusting connection pool in a distributed system
CN112231345A (en) * 2020-11-05 2021-01-15 福建天晴数码有限公司 Method and system for realizing concurrent request based on lock connection pool
US11799941B2 (en) * 2021-09-07 2023-10-24 Red Hat, Inc. Handling connection pool sizing with heterogeneous concurrency
CN114254032B (en) * 2022-02-25 2022-05-06 成都思维世纪科技有限责任公司 Distributed shared connection asset static data acquisition method and system
US20240061726A1 (en) * 2022-08-22 2024-02-22 Sap Se Efficient connection pooling

Citations (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4502116A (en) 1982-11-17 1985-02-26 At&T Bell Laboratories Multiple processor synchronized halt test arrangement
US5335343A (en) 1992-07-06 1994-08-02 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
US5504900A (en) 1991-05-21 1996-04-02 Digital Equipment Corporation Commitment ordering for guaranteeing serializability across distributed transactions
US5504899A (en) 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
US5586312A (en) 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US5630081A (en) 1995-09-07 1997-05-13 Puma Technology, Inc. Connection resource manager displaying link-status information using a traffic light iconic representation
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5764915A (en) * 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5795228A (en) 1996-07-03 1998-08-18 Ridefilm Corporation Interactive computer-based entertainment system
US5928323A (en) * 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US5983326A (en) 1996-07-01 1999-11-09 Sun Microsystems, Inc. Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5983225A (en) 1998-01-26 1999-11-09 Telenor As Parameterized lock management system and method for conditional conflict serializability of transactions
US5991792A (en) * 1998-01-02 1999-11-23 International Business Machines Corporation Method, apparatus and computer program product for dynamically managing a thread pool of reusable threads in a computer system
US6011791A (en) 1995-11-15 2000-01-04 Hitachi, Ltd. Multi-processor system and its network
US6038587A (en) 1996-09-03 2000-03-14 Insession, Inc. System, method and article of manufacture for universal transaction processing over multiple transaction processing systems
US6041354A (en) * 1995-09-08 2000-03-21 Lucent Technologies Inc. Dynamic hierarchical network resource scheduling for continuous media
US6105067A (en) * 1998-06-05 2000-08-15 International Business Machines Corp. Connection pool management for backend servers using common interface
US6154787A (en) * 1998-01-21 2000-11-28 Unisys Corporation Grouping shared resources into one or more pools and automatically re-assigning shared resources from where they are not currently needed to where they are needed
US6157927A (en) 1998-04-22 2000-12-05 Unisys Corporation Methods and apparatus for enabling a component in a first transaction processing environment to access a resource in another environment that is under the control of an Xatmi complaint transaction manager
US6233587B1 (en) 1998-05-07 2001-05-15 Oracle Corporation Extensible framework of key resource manager and transaction manager events for providing native support for foreign-initiated transactions
US6243717B1 (en) 1998-09-01 2001-06-05 Camstar Systems, Inc. System and method for implementing revision management of linked data entities and user dependent terminology
US6272675B1 (en) 1998-10-01 2001-08-07 Unisys Corporation Development system for automatically enabling a server application to execute with an XATMI-compliant transaction manager managing transactions within multiple environments
US6279001B1 (en) * 1998-05-29 2001-08-21 Webspective Software, Inc. Web service
US6317773B1 (en) 1994-10-11 2001-11-13 International Business Machines Corporation System and method for creating an object oriented transaction service that interoperates with procedural transaction coordinators
US6338112B1 (en) * 1997-02-21 2002-01-08 Novell, Inc. Resource management in a clustered computer system
US6374243B1 (en) 1998-05-27 2002-04-16 Ntt Communicationware Corporation Database access system having time-out mechanism
US20020065915A1 (en) * 2000-11-30 2002-05-30 Anderson Elizabeth A. System and method for server-host connection management to serve anticipated future client connections
US6405317B1 (en) 1998-01-30 2002-06-11 International Business Machines Corporation Security module for a transaction processing system
US6411956B1 (en) 1999-06-14 2002-06-25 Sun Microsystems, Inc. Method for distributed transaction support using JDBC 1.0 drivers
US20020083078A1 (en) 2000-11-02 2002-06-27 Guy Pardon Decentralized, distributed internet data management
US6421661B1 (en) 1998-06-15 2002-07-16 International Business Machines Corporation Hierarchical query syntax for inquiring and selecting among database objects
US6421688B1 (en) 1999-10-20 2002-07-16 Parallel Computers Technology, Inc. Method and apparatus for database fault tolerance with instant transaction replication using off-the-shelf database servers and low bandwidth networks
US6442618B1 (en) 1996-09-23 2002-08-27 Insession, Inc. System, method and article of manufacture for universal transaction processing
US20020124083A1 (en) 2000-09-06 2002-09-05 Sun Microsystems, Inc. Method and apparatus for increasing the efficiency of transactions and connection sharing in an enterprise environment
US6496828B1 (en) 1999-12-17 2002-12-17 International Business Machines Corporation Support for summary tables in a heterogeneous database environment
US6519679B2 (en) 1999-06-11 2003-02-11 Dell Usa, L.P. Policy based storage configuration
US20030033398A1 (en) 2001-08-10 2003-02-13 Sun Microsystems, Inc. Method, system, and program for generating and using configuration policies
US20030036919A1 (en) 2001-07-17 2003-02-20 Felt Edward P. System and method for transaction processing with synchronized callback processing feature
US20030046342A1 (en) 2001-07-17 2003-03-06 Felt Edward P. System and method for transaction processing with delegated commit feature
US20030055968A1 (en) * 2001-09-17 2003-03-20 Hochmuth Roland M. System and method for dynamic configuration of network resources
US6615265B1 (en) * 1998-08-04 2003-09-02 International Business Machines Corporation Enabling planned outages of application servers
US6651125B2 (en) * 1999-09-28 2003-11-18 International Business Machines Corporation Processing channel subsystem pending I/O work queues based on priorities
US6687729B1 (en) * 1999-12-20 2004-02-03 Unisys Corporation System and method for providing a pool of reusable threads for performing queued items of work
US6687831B1 (en) 1999-04-29 2004-02-03 International Business Machines Corporation Method and apparatus for multiple security service enablement in a data processing system
US20040030739A1 (en) 2002-08-06 2004-02-12 Homayoun Yousefi'zadeh Database remote replication for multi-tier computer systems by homayoun yousefi'zadeh
US6704737B1 (en) 1999-10-18 2004-03-09 Fisher-Rosemount Systems, Inc. Accessing and updating a configuration database from distributed physical locations within a process control system
US6728958B1 (en) 1998-07-31 2004-04-27 Hewlett-Packard Development Company, L.P. Volatile resource manager with pre-prepare notification
US20040088573A1 (en) * 2002-10-31 2004-05-06 Prabahar Jeyaram Method and apparatus for providing dynamic locks for global resources
US20040153450A1 (en) 2003-01-31 2004-08-05 K. Venugopal Rao Transaction optimization of read-only data sources
US20040153383A1 (en) 2003-01-31 2004-08-05 K Venugopal Rao Transaction management with last agent optimization
US20040153349A1 (en) 2003-01-31 2004-08-05 K. Venugopal Rao Delayed creation of global transactions
US20040172385A1 (en) 2003-02-27 2004-09-02 Vikram Dayal Database query and content transmission governor
US20040215473A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Simultaneous global transaction and local transaction management in an application server
US20040216109A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Common transaction manager interface
US20040215894A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Specifying transaction manager type at various application levels
US6832238B1 (en) 2000-05-24 2004-12-14 Sun Microsystems, Inc. Local transaction management
US20050015353A1 (en) 2003-07-14 2005-01-20 Sun Microsystems, Inc. Read/write lock transaction manager freezing
US20050015425A1 (en) 2003-07-14 2005-01-20 Sun Microsystems, Inc. Transaction manager freezing
US6854646B2 (en) 2001-10-05 2005-02-15 Hitachi, Ltd. Transaction management system and method
US6862573B2 (en) 2001-03-22 2005-03-01 Clear Technology, Inc. Automated transaction management system and method
US20050055325A1 (en) 2003-09-04 2005-03-10 Sun Microsystems, Inc. Identity for data sources
US20050066155A1 (en) 2003-09-04 2005-03-24 Sun Microsystems, Inc. Utility for configuring and verifying data sources
US6873995B2 (en) 2002-04-23 2005-03-29 International Business Machines Corporation Method, system, and program product for transaction management in a distributed content management application
US6950848B1 (en) 2000-05-05 2005-09-27 Yousefi Zadeh Homayoun Database load balancing for multi-tier computer systems
US6981221B2 (en) 2002-11-19 2005-12-27 Siemens Aktiengesellschaft Method and data network for automatically configuring a parameterizing surface of machine tools or production machines
US7065563B2 (en) * 2001-12-12 2006-06-20 International Business Machines Corporation Visible multi-level online-offline configuration control
US7089566B1 (en) 2002-02-07 2006-08-08 Unisys Corporation Method for accessing object linking-embedding database data via JAVA database connectivity
US7181509B2 (en) * 2002-05-21 2007-02-20 Hitachi, Ltd. Storage configuration changing apparatus and method thereof

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243737B1 (en) * 1999-04-09 2001-06-05 Translink Software, Inc. Method and apparatus for providing direct transaction access to information residing on a host system

Patent Citations (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4502116A (en) 1982-11-17 1985-02-26 At&T Bell Laboratories Multiple processor synchronized halt test arrangement
US5504900A (en) 1991-05-21 1996-04-02 Digital Equipment Corporation Commitment ordering for guaranteeing serializability across distributed transactions
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5504899A (en) 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
US5335343A (en) 1992-07-06 1994-08-02 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
US5586312A (en) 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US6317773B1 (en) 1994-10-11 2001-11-13 International Business Machines Corporation System and method for creating an object oriented transaction service that interoperates with procedural transaction coordinators
US5630081A (en) 1995-09-07 1997-05-13 Puma Technology, Inc. Connection resource manager displaying link-status information using a traffic light iconic representation
US6041354A (en) * 1995-09-08 2000-03-21 Lucent Technologies Inc. Dynamic hierarchical network resource scheduling for continuous media
US6011791A (en) 1995-11-15 2000-01-04 Hitachi, Ltd. Multi-processor system and its network
US5764915A (en) * 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5928323A (en) * 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US5983326A (en) 1996-07-01 1999-11-09 Sun Microsystems, Inc. Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5795228A (en) 1996-07-03 1998-08-18 Ridefilm Corporation Interactive computer-based entertainment system
US6038587A (en) 1996-09-03 2000-03-14 Insession, Inc. System, method and article of manufacture for universal transaction processing over multiple transaction processing systems
US6442618B1 (en) 1996-09-23 2002-08-27 Insession, Inc. System, method and article of manufacture for universal transaction processing
US6338112B1 (en) * 1997-02-21 2002-01-08 Novell, Inc. Resource management in a clustered computer system
US5991792A (en) * 1998-01-02 1999-11-23 International Business Machines Corporation Method, apparatus and computer program product for dynamically managing a thread pool of reusable threads in a computer system
US6154787A (en) * 1998-01-21 2000-11-28 Unisys Corporation Grouping shared resources into one or more pools and automatically re-assigning shared resources from where they are not currently needed to where they are needed
US5983225A (en) 1998-01-26 1999-11-09 Telenor As Parameterized lock management system and method for conditional conflict serializability of transactions
US6405317B1 (en) 1998-01-30 2002-06-11 International Business Machines Corporation Security module for a transaction processing system
US6157927A (en) 1998-04-22 2000-12-05 Unisys Corporation Methods and apparatus for enabling a component in a first transaction processing environment to access a resource in another environment that is under the control of an Xatmi complaint transaction manager
US6233587B1 (en) 1998-05-07 2001-05-15 Oracle Corporation Extensible framework of key resource manager and transaction manager events for providing native support for foreign-initiated transactions
US6374243B1 (en) 1998-05-27 2002-04-16 Ntt Communicationware Corporation Database access system having time-out mechanism
US6279001B1 (en) * 1998-05-29 2001-08-21 Webspective Software, Inc. Web service
US6105067A (en) * 1998-06-05 2000-08-15 International Business Machines Corp. Connection pool management for backend servers using common interface
US6421661B1 (en) 1998-06-15 2002-07-16 International Business Machines Corporation Hierarchical query syntax for inquiring and selecting among database objects
US6728958B1 (en) 1998-07-31 2004-04-27 Hewlett-Packard Development Company, L.P. Volatile resource manager with pre-prepare notification
US6615265B1 (en) * 1998-08-04 2003-09-02 International Business Machines Corporation Enabling planned outages of application servers
US6243717B1 (en) 1998-09-01 2001-06-05 Camstar Systems, Inc. System and method for implementing revision management of linked data entities and user dependent terminology
US6272675B1 (en) 1998-10-01 2001-08-07 Unisys Corporation Development system for automatically enabling a server application to execute with an XATMI-compliant transaction manager managing transactions within multiple environments
US6687831B1 (en) 1999-04-29 2004-02-03 International Business Machines Corporation Method and apparatus for multiple security service enablement in a data processing system
US6519679B2 (en) 1999-06-11 2003-02-11 Dell Usa, L.P. Policy based storage configuration
US6411956B1 (en) 1999-06-14 2002-06-25 Sun Microsystems, Inc. Method for distributed transaction support using JDBC 1.0 drivers
US6651125B2 (en) * 1999-09-28 2003-11-18 International Business Machines Corporation Processing channel subsystem pending I/O work queues based on priorities
US6704737B1 (en) 1999-10-18 2004-03-09 Fisher-Rosemount Systems, Inc. Accessing and updating a configuration database from distributed physical locations within a process control system
US6421688B1 (en) 1999-10-20 2002-07-16 Parallel Computers Technology, Inc. Method and apparatus for database fault tolerance with instant transaction replication using off-the-shelf database servers and low bandwidth networks
US6496828B1 (en) 1999-12-17 2002-12-17 International Business Machines Corporation Support for summary tables in a heterogeneous database environment
US6687729B1 (en) * 1999-12-20 2004-02-03 Unisys Corporation System and method for providing a pool of reusable threads for performing queued items of work
US6950848B1 (en) 2000-05-05 2005-09-27 Yousefi Zadeh Homayoun Database load balancing for multi-tier computer systems
US6832238B1 (en) 2000-05-24 2004-12-14 Sun Microsystems, Inc. Local transaction management
US20020124083A1 (en) 2000-09-06 2002-09-05 Sun Microsystems, Inc. Method and apparatus for increasing the efficiency of transactions and connection sharing in an enterprise environment
US20020083078A1 (en) 2000-11-02 2002-06-27 Guy Pardon Decentralized, distributed internet data management
US20020065915A1 (en) * 2000-11-30 2002-05-30 Anderson Elizabeth A. System and method for server-host connection management to serve anticipated future client connections
US6862573B2 (en) 2001-03-22 2005-03-01 Clear Technology, Inc. Automated transaction management system and method
US20030036919A1 (en) 2001-07-17 2003-02-20 Felt Edward P. System and method for transaction processing with synchronized callback processing feature
US7080119B2 (en) 2001-07-17 2006-07-18 Bea Systems, Inc. System and method for transaction processing with delegated commit feature
US20030046342A1 (en) 2001-07-17 2003-03-06 Felt Edward P. System and method for transaction processing with delegated commit feature
US20030033398A1 (en) 2001-08-10 2003-02-13 Sun Microsystems, Inc. Method, system, and program for generating and using configuration policies
US20030055968A1 (en) * 2001-09-17 2003-03-20 Hochmuth Roland M. System and method for dynamic configuration of network resources
US6854646B2 (en) 2001-10-05 2005-02-15 Hitachi, Ltd. Transaction management system and method
US7065563B2 (en) * 2001-12-12 2006-06-20 International Business Machines Corporation Visible multi-level online-offline configuration control
US7089566B1 (en) 2002-02-07 2006-08-08 Unisys Corporation Method for accessing object linking-embedding database data via JAVA database connectivity
US6873995B2 (en) 2002-04-23 2005-03-29 International Business Machines Corporation Method, system, and program product for transaction management in a distributed content management application
US7181509B2 (en) * 2002-05-21 2007-02-20 Hitachi, Ltd. Storage configuration changing apparatus and method thereof
US20040030739A1 (en) 2002-08-06 2004-02-12 Homayoun Yousefi'zadeh Database remote replication for multi-tier computer systems by homayoun yousefi'zadeh
US20040088573A1 (en) * 2002-10-31 2004-05-06 Prabahar Jeyaram Method and apparatus for providing dynamic locks for global resources
US6981221B2 (en) 2002-11-19 2005-12-27 Siemens Aktiengesellschaft Method and data network for automatically configuring a parameterizing surface of machine tools or production machines
US20040153450A1 (en) 2003-01-31 2004-08-05 K. Venugopal Rao Transaction optimization of read-only data sources
US7165061B2 (en) 2003-01-31 2007-01-16 Sun Microsystems, Inc. Transaction optimization of read-only data sources
US20040153383A1 (en) 2003-01-31 2004-08-05 K Venugopal Rao Transaction management with last agent optimization
US20040153349A1 (en) 2003-01-31 2004-08-05 K. Venugopal Rao Delayed creation of global transactions
US20040172385A1 (en) 2003-02-27 2004-09-02 Vikram Dayal Database query and content transmission governor
US7082432B2 (en) 2003-04-24 2006-07-25 Sun Microsystems, Inc. Specifying transaction manager type at various application levels
US20040215473A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Simultaneous global transaction and local transaction management in an application server
US20040216109A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Common transaction manager interface
US20040215894A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Specifying transaction manager type at various application levels
US20050015425A1 (en) 2003-07-14 2005-01-20 Sun Microsystems, Inc. Transaction manager freezing
US20050015353A1 (en) 2003-07-14 2005-01-20 Sun Microsystems, Inc. Read/write lock transaction manager freezing
US20050066155A1 (en) 2003-09-04 2005-03-24 Sun Microsystems, Inc. Utility for configuring and verifying data sources
US7134008B2 (en) 2003-09-04 2006-11-07 Sun Microsystems, Inc. Utility for configuring and verifying data sources
US20050055325A1 (en) 2003-09-04 2005-03-10 Sun Microsystems, Inc. Identity for data sources

Non-Patent Citations (24)

* Cited by examiner, † Cited by third party
Title
"Connection Pooling," Advanced Programming for the Java 2 Platform, Aug. 16, 2002, (4 Pages).
"Initial Context," JNDI 1.2.1 Specification: Class Initial Context, http://java.sun.com/products/jndi/1.2/javadoc/javax/naming/InitialContext.html, Jul. 14, 1999, (1 Page).
"Interface DataSource," DataSource (Java 2 Platform, SE v1.4.1), 2002, (1 Page).
"iPlanet Application Server 6.0 Administration Guide: Chapter 4 Logging Server Messages," http://docs.sun.com/source/816-5720-10/adlog.htm, Sep. 5, 2000, (21 Pages).
"iPlanet Application Server 6.0 Administration Guide: Chapter 9 Administering Transactions," http://docs.sun.com/source/816-5784-10/adtrans.htm, Sep. 5, 2000, (11 Pages).
"Java(TM) 2SDK, Enterprise Edition 1.3.1 Configuration Guide," http://java.sun.som/j2ee/sdk-1.3/techdocs/release/ConfigGuide.html, Jan. 3, 2002, ('16 Pages).
"Java™ 2SDK, Enterprise Edition 1.3.1 Configuration Guide," http://java.sun.som/j2ee/sdk—1.3/techdocs/release/ConfigGuide.html, Jan. 3, 2002, ('16 Pages).
"JDBC(TM) Data Access API-The JDBC API Universal Data Acess for the Enterprise," java.sun.com, Aug. 10, 2003, (5 Pages).
"JDBC™ Data Access API—The JDBC API Universal Data Acess for the Enterprise," java.sun.com, Aug. 10, 2003, (5 Pages).
"Simplified Guide to the Java TM 2 Platform Enterprise Edition," Sun Microsystems, Inc., 1999, (13 Pages).
BEA WebLogic Enterprise 5.1, BEA Systems, Inc., 2000, (13 Pages).
Breitbart et al., "Replication and Consistency Being Lazy Helps Sometimes," PODS '97, Jun. 1997, (pp. 173-184).
Dogac et al., "METU Interoperable Database System," Demo Description, in Proc. of ACM Sigmod Intl. Conf. on Management of Data, Jun. 1996, (6 Pages).
Efficient and Flexible Methods for Transient Versioning of Records to Avoid Locking by Read-Only Transactions, 1992 ACM SIGMOD, Jun. 1992, (pp. 124-133).
Ellis et al., :JDBC(TM) 3.0 Specification-Final Release, Sun Microsystems, Inc., Oct. 2001, (190 pages).
Ellis et al., :JDBC™ 3.0 Specification—Final Release, Sun Microsystems, Inc., Oct. 2001, (190 pages).
JNDI-Java(TM) Naming & Directory Interface(TM), Sun Microsystems, Inc., http://java.sun.com/jndi, May 15, 2003, (2 Pages).
JNDI—Java™ Naming & Directory Interface™, Sun Microsystems, Inc., http://java.sun.com/jndi, May 15, 2003, (2 Pages).
Kannegaard (J2EE BluePrints, Mar. 20, 2000 retrieved from http://java.sun.com/blueprints/guidelines/designing-enterprise-applications/apmTOC.html on Sep. 6, 2005).
Liu et al., "Designing a Test Suite for Empirically-based Middleware Performance Prediction," Australian Computer Society, Inc., (2002), (8 Pages).
Manolis Marazakis, Distributed Systems, Univ. of Crepe, Sep. 2002, pp. 1-31.
Oracle9i JDBC Developer's Guide and Reference (Mar. 2002, retrieved from http://www.stanford.edu/dept/itss/docs/oracle/9i/Java.920/a96654/toc.htm on Sep. 6, 2005).
Patricia Serrano-Alvarado et al."Mobile Transaction Supports for DBMS". In 17ièmes Journées Bases de Données Avancées, Agadir, Maroc, Oct. 2001, (19 Pages).
Siva Visveswaram, "Manage Acess to Shared, Server-Side Resources for High Performance-Dive Into Connection Pooling with J2EE," JavaWorld, Oct. 2000, (8 Pages).

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100217872A1 (en) * 2009-02-26 2010-08-26 Microsoft Corporation Notification model over a server-to-server connection pool
US8886787B2 (en) * 2009-02-26 2014-11-11 Microsoft Corporation Notification for a set of sessions using a single call issued from a connection pool
US9071465B1 (en) * 2010-05-18 2015-06-30 Cellco Partnership Method and system for SMS services and bind scaling
US9197703B2 (en) 2013-06-24 2015-11-24 Hitachi, Ltd. System and method to maximize server resource utilization and performance of metadata operations
US10833959B2 (en) * 2014-09-03 2020-11-10 International Business Machines Corporation Service level agreement (SLA) cognizent self-managing database connection pools in a multi-tenant environment
US20160065418A1 (en) * 2014-09-03 2016-03-03 International Business Machines Corporation Service level agreement (sla) cognizent self-managing database connection pools in a multi-tenant environment
US10833958B2 (en) * 2014-09-03 2020-11-10 International Business Machines Corporation Service level agreement (SLA) cognizent self-managing database connection pools in a multi-tenant environment
US20160065421A1 (en) * 2014-09-03 2016-03-03 International Business Machines Corporation Service level agreement (sla) cognizent self-managing database connection pools in a multi-tenant environment
CN105512127A (en) * 2014-09-24 2016-04-20 阿里巴巴集团控股有限公司 Method and device for distributing database connection
US10848574B2 (en) 2015-06-11 2020-11-24 Microsoft Technology Licensing, Llc Computing resource management system
WO2018027028A1 (en) * 2016-08-03 2018-02-08 Oracle International Corporation System and method for efficient repurposing of connections in a multi-tenant database environment
US11120036B2 (en) 2016-08-03 2021-09-14 Oracle International Corporation System and method for efficient repurposing of connections in a multi-tenant database environment
US10938933B2 (en) * 2019-05-14 2021-03-02 International Business Machines Corporation Managing dynamic configuration-based database connections using a proxy datasource
US10938934B2 (en) * 2019-05-14 2021-03-02 International Business Machines Corporation Managing dynamic configuration-based database connections using a proxy datasource

Also Published As

Publication number Publication date
US20040088413A1 (en) 2004-05-06

Similar Documents

Publication Publication Date Title
US8145759B2 (en) Dynamically configurable resource pool
US11068301B1 (en) Application hosting in a distributed application execution system
US7096469B1 (en) Method and apparatus for enforcing capacity limitations in a logically partitioned system
US7694082B2 (en) Computer program and method for managing resources in a distributed storage system
US7571438B2 (en) Method and system for resource management with independent real-time applications on a common set of machines
US6003061A (en) Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider
US7721292B2 (en) System for adjusting resource allocation to a logical partition based on rate of page swaps and utilization by changing a boot configuration file
US7363629B2 (en) Method, system, and program for remote resource management
US7441033B2 (en) On demand node and server instance allocation and de-allocation
JP4028674B2 (en) Method and apparatus for controlling the number of servers in a multi-system cluster
US7650400B2 (en) Dynamic configuration and self-tuning on inter-nodal communication resources in a database management system
US7877482B1 (en) Efficient application hosting in a distributed application execution system
US20010044817A1 (en) Computer system and a method for controlling a computer system
EP1654649B1 (en) On demand node and server instance allocation and de-allocation
EP1782205A2 (en) Autonomically tuning the virtual memory subsystem of a computer operating system
US20060198386A1 (en) System and method for distributed information handling system cluster active-active master node
US20030115118A1 (en) Resource utilization management
US9760405B2 (en) Defining enforcing and governing performance goals of a distributed caching infrastructure
US20140173605A1 (en) Managing resource pools for deadlock avoidance
CN112817765A (en) Distributed object storage bucket quota management method and system based on pre-authorization
US7370081B2 (en) Method, system, and program for communication of code changes for transmission of operation requests between processors
US11457065B1 (en) Service fleet rate adjustment
JPH05265844A (en) Memory utilizing system
US8799432B1 (en) Managed computer network caching requested and related data from remote computers

Legal Events

Date Code Title Description
AS Assignment

Owner name: SUN MICROSYSTEMS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BHOGI, SANKARA R.;KUMAR, AJAY;DUTT, BALA;AND OTHERS;REEL/FRAME:013468/0321;SIGNING DATES FROM 20021029 TO 20021030

Owner name: SUN MICROSYSTEMS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BHOGI, SANKARA R.;KUMAR, AJAY;DUTT, BALA;AND OTHERS;SIGNING DATES FROM 20021029 TO 20021030;REEL/FRAME:013468/0321

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: ORACLE AMERICA, INC., CALIFORNIA

Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:ORACLE USA, INC.;SUN MICROSYSTEMS, INC.;ORACLE AMERICA, INC.;REEL/FRAME:037311/0150

Effective date: 20100212

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12