최대 소켓 수에 도달했기 때문에 SSH 연결을 열 수 없습니다.

최대 소켓 수에 도달했기 때문에 SSH 연결을 열 수 없습니다.

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 -xass -ua(모든 Unix 소켓) 및 (모든 UDP 소켓) 에 대한 출력을 확인하십시오 . "로컬 주소:포트" 열은 어떤 프로세스가 이러한 소켓을 보유하고 있는지 찾는 데 유용합니다.

그런 다음 위에서 찾은 포트를 사용하여 출력을 보고 lsof프로세스 이름과 번호를 알아냅니다.

lsof | grep $PORT

이는 어떤 프로세스가 이러한 소켓을 보유하고 있는지 알려줍니다.

관련 정보