VPSとSSHリバース接続を介してVPSに接続された約100個のヘッドレスデバイスがあります。最近数日間、VPSは再起動後数分後にこのメッセージでSSH接続を拒否しましたkex_exchange_identification: read: Connection reset by peer
。
デバッグSSHフラグを使用してVPSに接続すると時々。debug1: client_input_channel_req: channel 0 rtype [email protected] reply 1
これについて読んでみると、許容されるソケットの最大数に達してエラーが発生したようです。
そしてss -xa | wc -l
:
494
ただし、430
以下のように、どのサービスがこのソケットを開くかはわかりません。
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_dgr ESTAB 0 0 * 2147483647 * 0
そしてcat /proc/user_beancounters
:
Version: 2.5
uid resource held maxheld barrier limit failcnt
103848: kmemsize 66312098 68554752 9223372036854775807 9223372036854775807 0
lockedpages 0 503 262144 262144 0
privvmpages 369146 386161 9223372036854775807 9223372036854775807 0
shmpages 74623 74943 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
numproc 357 393 9223372036854775807 9223372036854775807 0
physpages 146470 154269 0 262144 0
vmguarpages 0 0 294912 9223372036854775807 0
oomguarpages 99708 106874 262144 9223372036854775807 0
numtcpsock 338 339 9223372036854775807 9223372036854775807 0
numflock 59 64 9223372036854775807 9223372036854775807 0
numpty 2 4 9223372036854775807 9223372036854775807 0
numsiginfo 0 24 9223372036854775807 9223372036854775807 0
tcpsndbuf 7093000 7110440 9223372036854775807 9223372036854775807 0
tcprcvbuf 5766768 5783152 9223372036854775807 9223372036854775807 0
othersockbuf 523272 871456 9223372036854775807 9223372036854775807 0
dgramrcvbuf 0 30520 9223372036854775807 9223372036854775807 0
numothersock 500 500 500 500 8621
dcachesize 26527977 26991757 9223372036854775807 9223372036854775807 0
numfile 6064 6290 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
numiptent 30 30 9223372036854775807 9223372036854775807 0
どのサービスがそんなに多くのソケットを開けたのか、どうすればわかりますか?
答え1
インクルードは、/proc/user_beancounters
これがOpenVZホストで実行されている仮想化インスタンスであることを示しています。制限は、プロバイダの裁量によって決定されます。
失敗したカウンタは、numothersock
「TCP以外のソケット(ローカルソケット、UDP、およびその他のタイプのソケット)の最大数」として定義されます。
ss -xa
ss -ua
(すべてのUnixソケット)と(すべてのUDPソケット)の出力を確認してください。 「ローカルアドレス:ポート」列は、どのプロセスがこれらのソケットを保持しているかを見つけるのに役立ちます。
次に、上記のポートを使用して出力を表示し、lsof
プロセス名と番号を調べます。
lsof | grep $PORT
これは、どのプロセスがこれらのソケットを保持しているかを示します。