Windows Server 2008에서 가질 수있는 최대 TCP 연결 수는 얼마입니까?


11

혜성 스타일의 응용 프로그램을 지원하기 위해 Windows Server 2008을 실행하는 서버에서 가능한 많은 연결 (다양한 클라이언트의 단일 연결)을 인간적으로 가능한 한 많이 갖고 싶습니다. 응용 프로그램은 C #으로 작성되었습니다. 연결은 수다스럽지 않으며 열려 있어야합니다 (열려 있어야합니다). 메모리와 고속 CPU를 구매하는 것은 문제가되지 않습니다.

내가 알 수있는 한, NIC 당 65k 동시 개방 연결로 제한됩니다-최대 포트 수. 이것이 정확합니까? 아니면 어떻게 든 65k 연결 / NIC를 넘어 갈 수 있습니까? 적어도 수십만 개의 연결을 지원하는 Linux 용 서버 제품이있는 것 같습니다. 그들은 이것을 어떻게합니까?

답변:


9

65k 이상의 연결을 넘어 설 수 있습니다. 포트 당 여러 개의 연결을 가질 수 있으므로 (한 번 수락하면 리스너가 다른 클라이언트에 연결할 수 있음). 한쪽 끝 또는 다른 쪽 끝에는 약간의 차이가 있어야합니다. 일반적으로 클라이언트는 임의의 포트를 선택합니다. Windows는 기본적으로 이러한 임의 포트 중 3000 개 이상으로 제한됩니다. 따라서 일반적인 고객은 그 주변을 최대한 활용할 것입니다. 그러나 클라이언트를 다르게 구성 할 수 있으며 많은 * nix는 Windows보다 더 많이 제한됩니다.

최대 연결 수를 1600만으로 제한하는 레지스트리 설정이 있습니다. 그러나 일반적으로 더 적은 수로 제한하는 다른 실제 문제가 있습니다 (레지스트리 값을 변경할 수 있음).

  • Windows는 연결 당 약 1KB의 RAM을 사용합니다 (16M 연결의 경우 최대 16GB). 그리고 앱은 어떻게 든 활성 연결을 추적해야합니다 (더 많은 메모리).
  • 또한 Windows는 2 시간 동안 응답하지 않는 연결을 확인합니다. 16M 연결에서 약 0.5ms마다; 이러한 검사를 수행하는 데 상당한 대역폭이 필요합니다.

1
@evilfred : 임시 포트는 나가는 TCP 연결 용이며, 이는 포트 80에서 웹 서버에 연결할 때 클라이언트 컴퓨터가 임시 포트를 사용함을 의미합니다. Chris S가 말했듯이 세션이 설정되면 웹 서버는 다른 서버를 설정할 수 있습니다 다른 클라이언트에서 포트 80에 연결 또한, 그는 클라이언트의 임시 포트 제한을 그의 대답에 철저하게 노력하려고 언급했다고 생각합니다.이 클라이언트 임시 포트 제한은 귀하의 관심사가 아니며 고객의 관심사입니다. @Chris S : 나는 당신이 당신의 대답에서 무엇을 의미했는지 잘못 말하지 않기를 바랍니다.
joeqwerty

1
따라서 서버가 단일 IP에서 지원할 수있는 인바운드 연결 수에는 제한이 없습니까? 대상 포트가 공유 된 경우 서버는 클라이언트로부터 수신 한 데이터를 어디로 보낼지 어떻게 알 수 있습니까?

1
나는 클라이언트에 관심이 없습니다.

1
@evilfred : 각 TCP 세션은 클라이언트 ip | client port <> server ip | server 포트 인 4- 튜플을 통해 "관리"됩니다. 이것이 서버가 웹 서버의 포트 80과 같은 "공유"포트에서 각 세션 간의 트래픽을 관리하는 방법입니다.
joeqwerty

1
알아 IP 당 가능한 65k 개의 서버 포트가 있습니다. 따라서 IP 당 최대 65k 개의 활성 소켓이 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.