HomeOracle Page 4 - Configuring the Oracle HTTP Server
Managing Processes and Connections - Oracle
In the second article in a five-part series covering the Oracle HTTP Server (OHS), you will learn about server configuration directives, including access control directives and others. This article is excerpted from chapter five of the book Oracle 10g Application Server Exam Guide, written by Sam Alapati (McGraw-Hill, 2006; ISBN: 0072262710).
There are several server configuration-level directives you can use in the httpd.conf server configuration file to control the number of OHS processes and other runtime server-related issues. On a UNIX server, you use the following server-level directives to manage processes and connections:
StartServers The StartServers directive determines the number of child server processes created with the parent control process. The default value for the StartServers directive is 5. Because the OHS server will dynamically adjust the number of child server processes depending on the load, you don't have to worry about setting the value for this directive, in general.
MaxClients The MaxClients directive determines the maximum number of simultaneous connections that will be handled by the OHS server. Any connection attempts over the MaxClients setting will be queued, and will be accepted once the existing connections start dropping off. The default value for the MaxClients directive is 150.
MaxRequestsPerChild This directive lets you specify the number of requests each child process can handle before it dies. Each child process will handle a maximum of 30 requests during its lifetime before it automatically expires. If you set the MaxRequestsPerChild directive to a value of 0, the child processes will not die until you reboot the OHS server. Although this may seem like a tempting thing to do, remember that you increase the risk of running out of memory, say by a child process incurring a memory leak during its (eternal) lifetime. Also, when the OHS server load drops, it's advisable to run with a smaller number of child processes than that required during the peak load times. By setting a positive value (the default is a positive value of 30), you guarantee that the child processes have a finite lifetime, thus matching the number of child processes with the OHS server load.
MaxSpareServers This directive specifies the maximum number of unused child server processes that must be kept running. By default, the value for this directive is a maximum of ten server processes. If there are more idle servers than that specified by the MaxSpareServers directive, OHS will start killing idle child processes until it reaches the MaxSpareServers setting.
MinSpareServers This directive specifies the minimum number of child servers that must be kept running, and the default value for this directive is 5. If there are fewer than five child server processes alive, new processes are created at an increasing rate on a per second basis, until the rate set by the MAX_SPAWN_ RATE parameter is reached. Default value for the MAX_SPAWN_RATE parameter is 32.
You use the following directives in both the UNIX and the Windows systems:
KeepAlive This directive enables you to use a persistent connection, which improves the scalability of the Oracle HTTP Server. By default, the KeepAlive directive is set to ON, meaning persistent connections are enabled by default when you use OHS. Since HTTP connections are stateless, if you don't set this parameter to ON, a browser will need to make separate connections for each request from the server. Thus, for a Web page that contains a half a dozen images calling for .gif files, a client Web browser is forced to open a total of seven connections--one for the page and six requests for the six image files. Making multiple connections to satisfy the client request as shown here will increase the latency due to the time it takes to establish all the connections. By letting the KeepAlive directive remain at its default ON setting, your Web server performance will be dramatically higher, because latency will drop due to the need for fewer connections. Of course, there is an inherent tradeoff in using the KeepAlive On setting, because this way your server will have the burden of managing more persistent connections than if you had set the KeepAlive directive OFF.
on the job: You must keep the KeepAlive directive set to OFF if you're using OracleAS Clusters.
KeepAliveTimeout This directive determines the number of seconds the OHS Server waits for a connection request following the first connection, before terminating the connection.
MaxKeepAliveRequests This directive determines the number of requests allowed per connection, when you set the KeepAlive directive to ON. Default value is 0, which means that there is no limit to the number of requests that are allowed. You must set MaxKeepAliveRequests at a high value to make OHS perform efficiently.
ThreadsPerChild This directive controls the number of simultaneous requests for connections. It is applicable only to a Windows server.
Please check back next week for the continuation of this article.