The keepalive utility helps to manage web traffic and optimize the use of system resources. With the increase in the number of internet users, the workload on web servers also increases.
The system administrator hence, has to ensure the server is capable of putting up and accommodating the number of connection requests. If the number of users accessing the server increases, the whole system may begin to slow down in terms of access speed; it will become necessary at this point to perform routine tcp tuning on a Linux system. This is where the keepalive utility comes into play
Basically, the keepalive keeps a webpage active for a specified period of time after the user has abandoned it. When there is a high volume of users on a server, a decrease in the timeouts on a tcp socket will hence clean up the connections from the clients that are no longer active.
However, when the server is not busy, the default settings for the keepalive utility should be adequate. There are a couple of other parameters defined that I will explain a little later. This utility kills the connection to the server after completion of each client request. With Keepalive utility, it is possible to use the same tcp connection for all the http requests.
The following is the default configuration of the keepalive utility:
tcp_keepalive_time = 7200
tcp_keepalive_intvl = 75
tcp_keepalive_probes = 9
[all the above values are measured in seconds except the keepalive_probe which is just a number value]
- Keepalive_time: this refers to the time of a connection’s inactivity before a keepalive probeis sent.
- Keepalive_interval: this refers to the wait time before another keepalive probeis sent.
- Keep_alive probes: this is the number of probes that will be sent before the connection is terminated.
Now according to this default setting, our setup will detect an idle in connection in
[7200 + (75 * 9)] seconds = 7,875seconds.
By default, keepalive is not active on a Linux system. To setup,
1. Activate the keepalive tool. By default is off. To activate it, open up the apache configuration file at /etc/httpd/conf/httpd.conf and include the following:
2. Open the /etc/sysctl file with your editor and put in the following values:
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_intvl = 5 net.ipv4.tcp_keepalive_probes = 6
The values you choose to use are entirely up to you. It should not be too little and not too much if the traffic on your website is much.
3. Now save and quit the editor. Use sysctl –p to apply these changes to your configuration.
And you are done. Now, there are a couple of sites you can test the efficacy (I am not going to advertise for them) of your set up on. All they require is the name of your website. You can also use a tool such as GTMetrix to check your settings.
The keepalive utility helps to reduce load time on a server when there are multiple requests on the server. If you are experiencing a large traffic on your website, it is a safe practice to use the keepalive utility to enable your website run faster. After it has been enabled, it automatically opens and closes connections by itself, depending on usage.
However, if you are using a shared hosting provider, there is the likelihood that it will slow down your server.