As of Apache 2.1, the ability to use pooled connections to a backend server is available. Using the key=value parameters it is possible to tune this connection pooling. The default for a Hard Maximum for the number of connections is the number of threads per process in the active MPM. In the Prefork MPM, this is always 1, while with the Worker MPM it is controlled by the ThreadsPerChild.
Setting min will determine how many connections will always be open to the backend server. Upto the Soft Maximum or smax number of connections will be created on demand. Any connections above smax are subject to a time to live or ttl. Apache will never create more than the Hard Maximum or max connections to the backend server.
Minumum number of connections that will always be open to the backend server.
max
1...n
Hard Maximum number of connections that will be allowed to the backend server. The default for a Hard Maximum for the number of connections is the number of threads per process in the active MPM. In the Prefork MPM, this is always 1, while with the Worker MPM it is controlled by the ThreadsPerChild. Apache will never create more than the Hard Maximum connections to the backend server.
smax
max
Upto the Soft Maximum number of connections will be created on demand. Any connections above smax are subject to a time to live or ttl.
ttl
-
Time To Live for the inactive connections above the smax connections in seconds. Apache will close all connections that has not been used inside that time period.
timeout
Timeout
Connection timeout in seconds. If not set the Apache will wait until the free connection is available. This directive is used for limiting the number of connections to the backend server together with max parameter.
acquire
-
If set this will be the maximum time to wait for a free connection in the connection pool. If there are no free connections in the pool the Apache will return SERVER_BUSY status to the client.
keepalive
Off
This parameter should be used when you have a firewall between your Apache and the backend server, who tend to drop inactive connections. This flag will tell the Operating System to send KEEP_ALIVE messages on inactive connections (interval depends on global OS settings, generally 120ms), and thus prevent the firewall to drop the connection. To enable keepalive set this property value to On.
retry
60
Connection pool worker retry timeout in seconds. If the connection pool worker to the backend server is in the error state, Apache will not forward any requests to that server until the timeout expires. This enables to shut down the backend server for maintenance, and bring it back online later.
loadfactor
1
Worker load factor. Used with BalancerMember. It is a number between 1 and 100 and defines the normalized weighted load applied to the worker.
route
-
Route of the worker when used inside load balancer. The route is a value appended to seesion id.
redirect
-
Redirection Route of the worker. This value is usually set dynamically to enable safe removal of the node from the cluster. If set all requests without session id will be redirected to the BalancerMember that has route parametar equal as this value.
If the Proxy directive scheme starts with the balancer:// then a virtual worker that does not really communicate with the backend server will be created. Instead it is responsible for the management of several "real" workers. In that case the special set of parameters can be add to this virtual worker.
Parameter
Default
Description
lbmethod
-
Balancer load-balance method. Select the load-balancing scheduler method to use. Either byrequests, to perform weighted request counting or bytraffic, to perform weighted traffic byte count balancing. Default is byrequests.
stickysession
-
Balancer sticky session name. The value is usually set to something like JSESSIONID或PHPSESSIONID, and it depends on the backend application server that support sessions.
nofailover
Off
If set to On the session will break if the worker is in error state or disabled. Set this value to On if backend servers do not support session replication.
timeout
0
Balancer timeout in seconds. If set this will be the maximum time to wait for a free worker. Default is not to wait.
maxattempts
1
Maximum number of failover attempts before giving up.
ProxyPass /special-area http://special.example.com/ smax=5 max=10 ProxyPass / balancer://mycluster stickysession=jsessionid nofailover=On <Proxy balancer://mycluster> BalancerMember http://1.2.3.4:8009 BalancerMember http://1.2.3.5:8009 smax=10 # Less powerful server, don't send as many requests there BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20 </Proxy>
When used inside a <Location> section, the first argument is omitted and the local directory is obtained from the <Location>.
If you require a more flexible reverse-proxy configuration, see the RewriteRule directive with the [P] flag.