[server] 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마다; 이러한 검사를 수행하는 데 상당한 대역폭이 필요합니다.

답변