Windows Server 2008에서 가질 수있는 최대 TCP 연결 수는 얼마입니까? 연결은 수다스럽지 않으며 열려 있어야합니다

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

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



답변

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

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

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