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
이는 어떤 프로세스가 이러한 소켓을 보유하고 있는지 알려줍니다.