"TCP: too many of orphaned sockets"

※ このエントリは、はてなグループ終了に伴う、サブブログからの引越エントリ(2013/12)です。
※ 情報が古い可能性もありますので、ご留意ください。


説明

ソケットのクローズ処理時に、orphan 状態(*1)にあるソケットが想定したよりも多いことを検出した際に出力されるメッセージ。

具体的には、以下の2つの条件のうち、どちらかを満たした場合に出力される。

1.TCP ソケットのうち、orphan 状態のものが tcp_max_orphans(*2) を越えた。
2.TCP ソケットの送信キューの長さが最小値(SOCK_MIN_SNDBUF:2048)よりも長く、
  かつTCP 用にアロケートされているメモリ量が tcp_mem の high(*3) を越えていない。

この状態になると、カーネルは当該ソケットをクローズ状態に変更し、RST パケットを送出する。

  • (*1)orphan状態: システムで使用していたTCPソケットのうち、ソケットに使用しているメモリ領域を解放予定であるが、実際にはまだ解放していないソケットを指す。TCP にのみ存在する状態。
  • (*2)tcp_max_orphans: orphan 状態のソケットの最大数。デフォルト値は搭載メモリ量に応じて変動する。
  • (*3)tcp_mem のhigh: #cat /proc/sys/net/ipv4/tcp_mem とした場合に現れる値の3つ目がこれにあたる。
http://ossmpedia.org/messages/linux/2.6.9-34.EL/30053.ja

対処

システムの動作そのものに問題が発生してはいないため、必ずしも対処は必要ではない。

この状態に陥って、RST パケットを送出されるのが困る場合や、出力を抑制したい場合などには、以下のように tcp_max_orphans の値を増やすことで回避可能である。

・ # sysctl -w net.ipv4.tcp_max_orphans=VALUE
または
・ # echo VALUE  /proc/sys/net/ipv4/tcp_max_orphans
※VALUE は設定したい tcp_max_orphans の値
http://ossmpedia.org/messages/linux/2.6.9-34.EL/30053.ja