ロードアベレージとかディスクIOばかりに気を取られていると、ネットワーク関係で思わぬドツボにハマることがある。TCPポートの枯渇がその一つで対処法を説明する。
/proc/sys/net/ipv4/ip_local_port_rangeにはローカルポートとして利用できるアドレスの範囲が書いてある。CentOSのデフォルト値だと32768~60999、つまり28232個のポートが使用可能となっている。
使用中のポート数を確認
netstat |grep tcp|wc -l
使用ポート数を上回っている場合、使用ポート数を増やすか、TCPコネクションの保有時間を短くすること(CentOS7のデフォルト値は60秒)で対処できる。
/etc/sysctl.conf に次のように追記すること。
使用ポート数を増やす
net.ipv4.ip_local_port_range = 32768 65000
TCPコネクションの保有時間を短くする
net.ipv4.tcp_fin_timeout = 10