Subject: | Add TCP keepalive modification support for Linux |
This patch adds support for modifying various TCP keepalive parameters
if Socket::Linux is installed.
This is significant, as the default keepalive settings are for 2 hours,
while many institutions set their firewalls, etc, to lower thresh holds
for dropping connections.
If keepalive is set to 1 and Socket::Linux is available, then the
following 3 items can be set:
=item keepalive_idle =E<gt> N
The time (in seconds) the connection needs to remain idle before TCP
starts sending keepalive probes, if the socket option SO_KEEPALIVE has
been set on this socket. Only works if Socket::Linux is available.
=item keepalive_interval =E<gt> N
The time (in seconds) between individual keepalive probes. Only works
if Socket::Linux is available.
=item keepalive_probe =E<gt> N
The maximum number of keepalive probes TCP should send before dropping
the connection. Only works if Socket::Linux is available.
At my work, I was able to test this, given that we have two servers with
a firewall in between, that closes connections that are idle for 30
minutes. ldap-test1.pl just sets keepalive to 1:
[zimbra@edge01-zcs tmp]$ ./ldap-test1.pl
First size is: 2985
Sleeping 31 minutes
Starting second search.
ERROR: Unable to verify ldap connection - exiting
You can see after 31 minutes, the connection had been closed by the
firewall, and it was unable to do a second search.
ldap-test2.pl uses the new parameters to lower the thresh hold for
sending probes from 2 hours to 5 minutes. Its results are much better:
[zimbra@edge01-zcs ~]$ /tmp/ldap-test2.pl
First size is: 2985
Sleeping 31 minutes
Starting second search.
Second size is: 2985
Subject: | net-ldap-keepalive.patch.gz |
Message body not shown because it is not plain text.