If you have a Linux box acting as transparent/reverse/cache proxy and you see something like this in your squid logs:
squid[24228]: commBind: Cannot bind socket FD 91 to *:0: (98) Address already in use
and moreover you’re noticing that the load value is increasing too much, you are running out of available TCP/IP ports in your Squid IP address.
This is due to the fact that by default Linux 2.6 reserves about 30.000 ports (from 32768 to 61000) as local ports. Considering that a closed connection stays in the TIME_WAIT status for 60 seconds (hardcoded value in the Linux kernel), you can have ~600 TCP connections per second in your box before starting to see this problem (at least with that particular IP).
A temporary solution it is to increase the local ports range with the following command:
echo "10000 61000" > /proc/sys/net/ipv4/ip_local_port_range
giving in this case Squid a range of ~50.000 ports.
An alternative which I have had a good deal of success with on extremely network-intensive systems is an addition to sysctl.conf to not wait at all:
mshuler@aineko:~$ tail -2 /etc/sysctl.conf
# disable TIME_WAIT.. wait..
net.ipv4.tcp_tw_recycle=1
Kind Regards.
Oh, thanks a lot! Didn’t know that sysctl setting.