윈도우에서 높은 동시 TCP 요청 포트가 차지하는 문제를 어떻게 해결합니까

4619 단어 java 프로그래밍
클라이언트가 서버의 TCP/IP 소켓 연결을 시작할 때 클라이언트는 일반적으로 서버의 특정 포트에 연결되며 서버가 임시(또는 일시적으로) TCP 또는 UDP 포트를 통해 응답하도록 요청합니다.Windows Server 2003 및 Windows XP에서 클라이언트 응용 프로그램이 사용하는 임시 포트의 기본 범위는 1025 ~ 5000입니다.일부 경우 기본 범위의 사용 가능한 포트가 모두 소모될 수 있습니다.
TCP/IP 포트가 소진되면 BizTalk Server에 연결된 응용 프로그램과 원격 서버에 연결된 BizTalk 응용 프로그램에 예기치 않은 오류가 발생할 수 있습니다.
TCP/IP 포트 소모 증상은 클라이언트 어플리케이션에 따라 다르지만 일반적으로 네트워크 접속 오류를 나타냅니다.네트워크 접속 실패가 TCP/IP 포트 소진으로 인한 것인지 확인하려면 클라이언트 컴퓨터에서 다음 단계를 수행합니다.
  • Windows XP 또는 Windows Server 2003을 실행하는 컴퓨터에서 "시작"을 누르고 "실행"을 클릭한 다음 cmd를 입력하고 "확인"을 누르면 명령 알림을 열 수 있습니다
  • 다음 중 하나를 수행합니다.
    Windows XP 또는 Windows Server 2003 컴퓨터의 명령 프롬프트에 다음 명령을 입력하여 이 컴퓨터의 TCP/IP 프로토콜에 사용되는 활성 연결을 표시합니다.
     
    복사
    netstat -n
    

    클라이언트 컴퓨터에 바인딩된 TCP/IP 주소와 원격 서버 통신에 사용되는 TCP/IP 주소가 나열됩니다.나열된 포트가 사용 가능한 모든 포트를 사용하는 경우 TCP/IP 포트 소진 현상이 발생합니다..

  • Windows Server 2003 기반 클라이언트 컴퓨터의 명령 프롬프트에 다음 명령을 입력하여 TCP/IP 프로토콜에 사용되는 활성 연결을 표시합니다.
     
    복사
    netstat -b
    

    클라이언트 컴퓨터에 바인딩된 TCP/IP 주소, 원격 서버 통신에 사용되는 TCP/IP 주소, 이러한 포트를 사용하는 응용 프로그램이 나열됩니다.이 정보는 클라이언트 응용 프로그램이 너무 많은 TCP/IP 포트를 사용하고 있는지 확인하는 데 도움을 줍니다

    TCP/IP 포트 소진과 관련된 문제


    클라이언트 응용 프로그램이 TCP/IP 소켓을 사용하여 BizTalk Server에 연결하거나 BizTalk 응용 프로그램이 TCP/IP 소켓을 사용하여 서버에 연결하려고 하면 다음과 같은 상황이 발생할 수 있습니다.
     
    복사
    System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send.
    

    - 또는 -
     
    복사
    Unable to connect to the remote server
    System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted.
    

    이러한 오류가 발생하면 다음과 같은 문제가 발생할 수 있습니다.
    클라이언트 응용 프로그램이 BizTalk Server에 연결되지 않을 수 있습니다..
    BizTalk 응용 프로그램 서비스가 원격 SQL 서버에 연결되지 않을 수 있습니다..
    BizTalk Server 어댑터가 원격 서버에 연결되지 않을 수 있습니다..
    클라이언트 응용 프로그램이 예약한 모든 포트는 코어 메모리를 차지한다.많은 수의 클라이언트 포트가 예약되어 있으면 Windows 코어 메모리의 사용률이 증가합니다

    원인


    클라이언트 컴퓨터에 비정상적인 TCIP/IP 소켓 연결이 존재하면 클라이언트 컴퓨터에서 TCP/IP 포트가 소모될 수 있습니다.여러 클라이언트 응용 프로그램이 연결을 맺고 있다면 이런 상황이 발생할 수 있습니다.
    사용 가능한 모든 임시 포트가 클라이언트 응용 프로그램에 할당되면 클라이언트는 TCP/IP 포트가 소모됩니다.TCP/IP 포트가 소진되면 클라이언트 포트를 예약할 수 없으며 서버에 TCP/IP 소켓으로 연결하려는 클라이언트 응용 프로그램에서도 오류가 발생합니다.
    높은 부하 상황에서 정상적인 부하에 있을 때보다 TCP/IP 포트가 소모되기 쉽다.

    해결 방법


    TCP/IP 포트 소진 및 관련 문제를 방지하려면 다음 절차를 따르십시오.
  • 클라이언트 응용 프로그램이 TCP/IP 소켓 연결을 많이 생성하지 않았는지 확인합니다.이 점은 위에서 언급한 방법으로 확인할 수 있다. 즉, Windows Server 2003과 Windows XP에서 넷stat-n을 실행하거나 Windows Server 2003과 2008에서 넷stat-b를 실행하는 것이다.클라이언트 응용 프로그램이 비정상적인 TCP/IP 소켓 연결을 사용한다면 TCP/IP 소켓 연결을 더욱 효과적으로 사용할 수 있도록 클라이언트 응용 프로그램을 재설계하는 것을 고려해야 한다.
    주의하다
    만약 BizTalk 응용 프로그램 서비스(BTSNTSvc.exe)의 실례에 수량이 비정상적인 클라이언트 포트가 예약되어 있다면, BizTalk 응용 프로그램 서비스에서 실행되는 사용자 정의 코드가 너무 많은 TCP/IP 플러그인 연결을 구축하지 않았음을 검증해야 한다. 
     
  • 대량의 클라이언트 응용 프로그램이 이미 알고 있는 수량의 TCP/IP 플러그인 연결을 시작하려고 하지만 연결 요청을 충족시킬 수 있는 임시 포트가 충분하지 않으면 다음 등록표를 수정해야 한다.
    경고
    등록표 편집기를 잘못 사용하면 심각한 문제가 발생하여 운영체제를 다시 설치할 수 있습니다.Microsoft는 레지스트리 편집기의 부적절한 사용으로 인한 문제를 해결할 수 있다고 보장하지 않습니다.등록표 편집기를 신중하게 사용하십시오. 위험은 스스로 부담하십시오.레지스트리를 수정하기 전에 반드시 레지스트리를 백업하고 문제가 발생할 때 백업을 어떻게 사용해서 복원하는지 확인하십시오.레지스트리를 백업, 복원 및 수정하는 방법에 대한 자세한 내용은 Microsoft Knowledgebase 문서 "Microsoft Windows 레지스트리 설명"을 참조하십시오. 사이트 주소는http://go.microsoft.com/fwlink/?LinkId=62729.  
     
    클라이언트 TCP/IP 소켓 연결에 동적으로 할당되는 임시 포트의 상한선을 늘립니다.
  • 등록표 편집기 시작..
  • 등록표에서 다음 등록표 항목을 찾아 클릭합니다.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  • 편집 메뉴에서 새로 만들기, DWORD 값을 클릭한 다음 다음 다음 레지스트리 값을 추가하여 클라이언트에 동적으로 할당할 수 있는 임시 포트의 수를 늘립니다

     


    값 이름
    MaxUserPort
    값 데이터
  • 등록표 편집기를 닫습니다.
    주의하다
    이 변경 사항은 컴퓨터를 다시 시작해야 적용됩니다. 
     
    주의하다
    클라이언트 TCP/IP 접속을 위한 임시 포트의 범위를 늘리면 Windows 코어 메모리가 사용됩니다.이 설정의 값을 클라이언트 응용 프로그램의 소켓 연결을 수용하는 데 필요한 값을 초과하지 마십시오. 가능한 한 Windows 내장 메모리의 불필요한 사용을 줄이십시오. 
     

  • 클라이언트 TCP/IP 소켓 연결의 시간 초과 값 감소(기본값은 240초)
  • 등록표 편집기 시작..
  • 등록표에서 다음 등록표 항목을 찾아 클릭합니다.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  • 편집 메뉴에서 새로 만들기, DWORD 값을 클릭한 다음 다음 다음 레지스트리 값을 추가하여 연결을 닫을 때 TIME_WAIT 상태의 시간입니다.연결이 TIME_ 인 경우WAIT 상태에서는 소켓 쌍을 다시 사용할 수 없습니다

     


    값 이름
    TcpTimedWaitDelay
    값 데이터
  • 등록표 편집기를 닫습니다.
    주의하다
    이 변경 사항은 컴퓨터를 다시 시작해야 적용됩니다. 
     
    주의하다
    이 값의 유효 범위는 30에서 300 사이입니다.기본값은 240입니다.

  • 좋은 웹페이지 즐겨찾기