web-dev-qa-db-ja.com

TCPの意味:孤立したソケットが多すぎるとはどういう意味ですか?

Linuxカーネルメッセージを確認するためにdmesgを使用すると、大量の...が表示されます。

TCP:孤立したソケットが多すぎます

メッセージ。私の推測では、これは、閉じられた後、クリアされるのを待っているTIME_WAITでハングしているソケットです。これがこれらのサーバーで実行されているサービスに影響を与える可能性があるかどうか知りたいです。

7
andrew pate

[〜#〜] lartc [〜#〜] HOWTOから:

/proc/sys/net/ipv4/tcp_max_orphans

Maximal number of TCP sockets not attached to any user file handle, 
held by system. If this number is exceeded orphaned connections are
reset immediately and warning is printed. This limit exists only to
prevent simple DoS attacks, you _must_ not rely on this or lower the
limit artificially, but rather increase it (probably, after increasing
installed memory), if network conditions require more than default value,
and tune network services to linger and kill such states more aggressively.

Let me remind you again: each Orphan eats up to  64K of unswappable memory.

孤児の数を制限する関数の実装は here です。

6

このエラーの考えられる原因は、システムがソケットメモリを使い果たしたことです。ソケットメモリ(net.ipv4.tcp_mem)を増やすか、メモリ消費の原因を見つける必要があります。

        [root@test ~]# cat /proc/sys/net/ipv4/tcp_mem
         362688  483584  725376

したがって、ここで私のシステムでは、725376(ページ)* 4096 = 2971140096bytes/1024 * 1024 = 708メガバイトが表示されます。

したがって、この708メガバイトのメモリは、アプリケーションがデータを送受信するために使用するだけでなく、ループバックインターフェイスによっても使用されます。いずれかの段階でこの値に達すると、このメモリがソケットを開いたままにしているアプリケーションから解放されるまで、これ以上ソケットを作成できません。これは、netstat -antulpを使用して判別できます。

2