TCP 서버 구현을 테스트하는 방법은 무엇입니까?
-
22-07-2019 - |
문제
저는 TCP 에코 서비스로 작동하는 애플리케이션을 생성하는 데 사용하는 TCP 서버 구현을 작성했습니다.
이제 이 에코 서버를 테스트하고 싶습니다.
- 처리할 수 있는 연결 수
- 응답시간은 얼마나 되나요?
- 얼마나 많은 메모리와 CPU를 사용합니까?
이 에코 서버를 테스트하기 위한 표준 방법/도구를 제안해 주실 수 있습니까?나는 TCP와 에코 서버 구현이 모두 상당히 표준적인 방식이라는 것을 알고 있으므로 이를 테스트하기 위해 확립된 도구를 찾고 싶습니다.
추신.:나만의 테스트 애플리케이션을 작성할 수 있지만 어떤 문제가 발견되면 내 서버에서 문제가 발생하는지 확인해야 하기 때문에 작성하고 싶지 않습니다.테스트 클라이언트를 먼저 테스트하고 싶지 않습니다.
나는 C#과 .NET 3.5를 사용하여 이 구현을 작성했지만 질문과 관련해서는 중요하지 않다고 생각합니다.
해결책
당신에게 도움이 될 수 있는 무료 도구가 있습니다.저는 C++ 서버 프레임워크로 구축된 서버를 테스트하는 데 이를 사용합니다.이 도구는 다음에서 사용할 수 있습니다. http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html.이를 통해 구성 가능한 속도로 대상 서버에 대해 구성 가능한 수의 연결을 생성한 다음 각 연결에서 데이터를 다시 구성 가능한 속도로 보낼 수 있습니다.
이를 사용하는 가장 좋은 방법은 서버와 다른 컴퓨터에서 실행하는 것이며(아주 분명하지만...) 여러 다른 컴퓨터에서 여러 복사본을 실행하는 것입니다.약 4000개 이상의 연결을 만들 수 없다면 연결을 조정해야 할 가능성이 높습니다. MAX_USER_PORT
클라이언트를 실행하는 컴퓨터의 레지스트리 설정입니다.
TCP 코드를 테스트한 후에는 서버가 지원하는 프로토콜을 테스트해야 할 수도 있습니다.저는 CodeProject(http://www.codeproject.com/KB/IP/testingsocketservers.aspx).이를 통해 프로토콜을 지원하고 프로토콜에 구애받지 않는 작업(많은 연결, 조각난 읽기를 위한 메시지 분할 등)을 처리하는 "플러그인"을 작성할 수 있습니다.디자인은 다소 지저분한 연결당 스레드 디자인이며 더 많은 수의 연결에 대해서는 비동기 디자인을 사용하여 무언가를 다시 구현하는 것이 더 나을 것입니다. 하지만 저는 이를 위한 C++ 도구를 가지고 있으므로 이 테스트 프로그램을 변경할 생각이 전혀 없습니다. .
다른 팁
이전에 같은 상황에서 나는 Funkload를 사용했습니다. 소규모 클라이언트를 파이썬 코드 스 니펫으로 작성할 수 있다면 FunkLoad가 원하는만큼 서버에 대해 많은 것을 실행하고 결과를 그래프로 표시합니다.
일련의 테스트 서버에 대한 완전한 작업 예제는 공개 소스 코드 저장소가 도움이되는 경우 My Foundation of Python Network 프로그래밍 북의 두 번째 판의 중심입니다.
https://github.com/brandon-rhodes/fopnp/tree/m/py2/chapter07