高負荷系サービスで Web サーバーの接続が不安定なときにまず疑うべき 3 点
DNS 引きまくってる
PHP でいうところの gethostbyaddr みたいな関数をつかって外部の DNS をひきにいく処理が繰り返し行われていると、アタックとみなされて応答しなくなる。結果 Web サーバーがおそくなったかのように見える。ださいけどありがち。
apache の同時接続数が足りてない
デフォルト値の上限に達してるのかも。prefork の場合だと ServerLimit や MaxClients の値。ただしむやみに多くしすぎないこと。少なくとも httpd 1 プロセスあたりのメモリ消費量*MaxClients が搭載メモリを超えないこと。
iptables の ip_conntrack が上限に達してる
iptables が稼働している場合にありがち。
cat /proc/sys/net/ipv4/ip_conntrack_max
で確認。
vi /etc/modprobe.conf
に
options ip_conntrack hashsize=32768
を追記。
cat /proc/sys/net/ipv4/ip_conntrack_max
で確認できる (*8 になっているはず)。
なおいま conntrack として登録されている数を知るには以下のコマンド
cat /proc/net/stat/ip_conntrack