Some time our application gets chocked because of large number of connection in COSE WAIT state, In such case there is only way to get rid of it by closing application, but in production we cann't kill our application this frequently, so here is a hack I come accross for it.
Ultimate solution :: optimise and find reason in your application.
#!/bin/bash
netstat -tulnap | grep CLOSE_WAIT | awk '{print $4,$5}' | sed 's/:/ /g' | awk '{print $2, $3, $5, $6}'| while read line; do
echo $line
perl kill_cw.pl $line;
done
wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/perl-Net-RawIP-0.25-1.el6.rf.x86_64.rpm
wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/perl-Net-Pcap-0.16-1.el6.rf.x86_64.rpm
wget http://www6.atomicorp.com/channels/atomic/centos/6/i386/RPMS/perl-NetPacket-0.41.1-1.el6.art.noarch.rpm
rpm -Uvh perl-Net-RawIP-0.25-1.el6.rf.x86_64.rpm
rpm -Uvh perl-Net-Pcap-0.16-1.el6.rf.x86_64.rpm
yum install perl-Net-Pcap
rpm -Uvh perl-NetPacket-0.41.1-1.el6.art.noarch.rpm
(http://pkgs.org/centos-6/atomic-i386/perl-NetPacket-0.41.1-1.el6.art.noarch.rpm.html)
Ultimate solution :: optimise and find reason in your application.
#!/bin/bash
netstat -tulnap | grep CLOSE_WAIT | awk '{print $4,$5}' | sed 's/:/ /g' | awk '{print $2, $3, $5, $6}'| while read line; do
echo $line
perl kill_cw.pl $line;
done
wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/perl-Net-RawIP-0.25-1.el6.rf.x86_64.rpm
wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/perl-Net-Pcap-0.16-1.el6.rf.x86_64.rpm
wget http://www6.atomicorp.com/channels/atomic/centos/6/i386/RPMS/perl-NetPacket-0.41.1-1.el6.art.noarch.rpm
rpm -Uvh perl-Net-RawIP-0.25-1.el6.rf.x86_64.rpm
rpm -Uvh perl-Net-Pcap-0.16-1.el6.rf.x86_64.rpm
yum install perl-Net-Pcap
rpm -Uvh perl-NetPacket-0.41.1-1.el6.art.noarch.rpm
(http://pkgs.org/centos-6/atomic-i386/perl-NetPacket-0.41.1-1.el6.art.noarch.rpm.html)