Optimizing Utilization of Resource Pools in Web Application Servers
Venue
Concurrency and Computation: Practice and Experience, vol. 22 (2010), pp. 2421-2444
Publication Year
2010
Authors
Alexander Totok, Vijay Karamcheti
BibTeX
Abstract
Among the web application server resources, most critical for its performance are
those that are held exclusively by a service request for the duration of its
execution (or some significant part of it). Such exclusively-held server resources
become performance bottleneck points, with failures to obtain such a resource
constituting a major portion of request rejections under server overload
conditions. In this paper, we propose a methodology that computes the optimal pool
sizes for two such critical resources: web server threads and database connections.
Our methodology uses information about incoming request flow and about fine-grained
server resource utilization by service requests of different types, obtained
through offline and online request profiling. In our methodology, we advocate (and
show its benefits) the use of a database connection pooling mechanism that caches
database connections for the duration of a service request execution (so-called
request-wide database connection caching). We evaluate our methodology by testing
it on the TPC-W web application. Our method is able to accurately compute the
optimal number of server threads and database connections, and the value of
sustainable request throughput computed by the method always lies within a 5%
margin of the actual value determined experimentally.
