2011-08-30 8 views
2

TCP IP 연결을 사용하여 C++로 작성된 winsock IOCP 서버가 있습니다. 클라이언트 시뮬레이터에서 루프백 주소를 사용하여이 서버를 로컬에서 테스트했습니다. 나는 60,000 명 이상의 고객에게 땀을 흘려 줄 수 없었다. 내가 가지고있는 문제는 내 집에서 서버를 실행하고 친구 집에서 클라이언트 시뮬레이터를 실행할 때입니다. 우리가 약 3700 개의 연결을 치기 전까지는 모든 것이 잘 작동합니다. 그 후에 connect()에 대한 모든 호출은 10060의 리턴으로 클라이언트 측에서 실패합니다 (이것은 winsock 시간 초과 오류입니다). 지난 밤에이 숫자는 3700 이었지만 이전에는 약 300이었고 1000에 가까운 수치를 보았습니다. 그러나 숫자가 무엇이든간에 우리가 시뮬레이션하려고 할 때마다 그 수를 중심으로 (10 정도 내에서) 실패 할 것입니다. .Winsock IOCP 서버 스트레스 테스트 문제

두 컴퓨터 모두 Windows 7 Ultimate을 사용하고 있습니다. 또한 MaxTcpConnections 설정 TCPIP 레지스트리를 약 1,600 만 개로 수정했습니다. 또한 MaxUserPort 설정을 5000 기본값에서 65k로 변경했습니다. 유용한 정보가 이벤트 표시기에 나타나지 않습니다. 우리는 또한 우리의 리소스 모니터를 보았습니다. 그리고 우리는 심지어 1 %의 네트워크 사용량을 얻지도 않았고 CPU도 0 % 사용량에 가깝습니다.

방금 ​​우리 ISP에서 전화를 끊었습니다. 그들은 어떤 식 으로든 우리를 제한하지 않는다고 말하고 있지만, 그 사람은 다소 불확실하고 30 분의 대기 시간 후에 우리에게 매달 리게되었습니다.

우리는이 문제를 해결하기 위해 모든 노력을 기울이고 있지만 해결책을 찾을 수는 없습니다. 누군가가 우리에게이 문제를 제기 할 수 있다면 정말 대단 할 것입니다.

P. 두 컴퓨터 모두 동일한 버라이존 라우터가있는 Verizon FIOS에 있습니다. 주목할 또 다른 것은 서버가 WSAAccept를 사용하고 AcceptEx를 사용하지 않는 것입니다. 클라이언트 시뮬레이터가 여러 초에 걸쳐 연결을 시도하고 있으므로 연결이 백 로그되지 않은 것으로 확신합니다. 우리는 클라이언트 시뮬레이터가 연결되는 속도를 변경하려고 시도했으나 어떤 속도가 설정 되더라도 매번 같은 수를 중심으로 실패합니다.

업데이트 네트워크 A에서 2 대의 개별 클라이언트 (2 대의 개별 시스템)를 시뮬레이션했습니다. 서버는 네트워크 B에서 실행 중이었습니다. 각 클라이언트는 서버에 절반 (약 1600) 연결 만 연결할 수있었습니다. 우리는 처음에 1,000보다 작은 포트를 사용 했었습니다.이 포트는 5 만 개 이상으로 변경되었습니다. 두 시스템의 라우터 로그에 아무것도 표시되지 않았습니다. 우리는 둘 다 Actiontec MI424WR verizon FIOS 라우터를 사용하고 있습니다. 이로 인해 문제는 클라이언트 코드와 관련이 없다고 생각하게됩니다. 서버는 오류를 발생시키지 않으며 예기치 않은 동작을하지 않습니다. 이것이 ISP/라우터 문제 일 수 있습니까?

업데이트 해결책이 발견되었습니다. 사용중인 버라이존 라우터 (MI424WR 개정 C)는 3700 개를 넘는 연결을 처리 할 수 ​​없으므로 별도의 네트워크 세트를 사용하여 테스트했습니다. 도움을 주셔서 감사합니다!

감사 - 릭

+0

패킷 스니퍼 (예 : wireshark)를 사용하여 문제를 확인하십시오. – Hasturkun

+0

아티스트를 다운로드하여 시도해 보시기 바랍니다. 이전에는 하나를 사용하지 않았으므로 정확히 무엇이 필요한지 잘 모릅니다. 발생하는 오류를 표시합니까, 아니면 저수준 패킷을 검사하고 무슨 일이 일어나는지 스스로 결정해야합니까? – Rick

답변

0

나는 이것이 MaxUserPort를 문제라고 짐작했을 것이다, 그러나 당신은 당신이 변경되었습니다 말한다. 변경 후 재부팅 했습니까?

로컬 네트워크의 똑같은 컴퓨터에서 테스트를 실행하십시오 (그러면 컴퓨터가 문제가 될 수 있습니다).

문제는 라우터 중 하나 일 가능성이 있습니까?

+0

응답 해 주셔서 감사합니다.예, 우리는 지난 며칠 동안 재부팅하여이 문제를 해결해 왔습니다. 나는 아직 로컬 네트워크를 통해 테스트를 실행하지 않았지만, 내가 이것을 수행 할 수 있는지 알게 될 것이고 어떤 일이 발생했는지 알려줄 것이다. – Rick

+0

또한 라우터가이 코드가 작동하지 않게하려면 정확히 무엇을 할 수 있습니까? (어디에서 실패할까요?) – Rick

+0

라우터라면 놀랍지 만 값싼 가정용 라우터라면 대처할 수 없습니다. 그 많은 동시 연결 ... –