호스트에서 인위적으로 여러 TCP 연결을 여는 방법(테스트)은 무엇입니까?

호스트에서 인위적으로 여러 TCP 연결을 여는 방법(테스트)은 무엇입니까?

과부하 상태에서 서버 성능을 테스트하기 위해 테스트 설정을 구축하려고 합니다. 이를 위해 수천 개의 TCP 연결을 열고 싶습니다. 문제는 호스트가 서버용과 부하 생성기용으로 각각 두 개뿐이라는 것입니다.

이를 수행할 수 있는 방법이 있습니까?

답변1

좋습니다. 두 개의 파일이 필요합니다.

첫 번째 파일은 netcat을 사용하여 여러 수신 포트를 여는 서버에서 실행할 작은 스크립트입니다.

두 번째 파일은 클라이언트에서 실행될 작은 스크립트입니다. 반드시 serverIP서버의 실제 IP로 변경하세요.

이제 명심하세요. 이것은 제가 아주 빨리 정리한 것입니다. 포트 목록은 완벽하지 않습니다. 일부 포트는 예약되어 있고 일부는 사용되지만 대부분은 유효하므로 둘 다 루트로 실행해야 합니다. 내 시스템에서 실행 중이고 2000개 중 약 20개가 이미 사용 중입니다. 따라서 조정할 수 있지만 아이디어를 얻을 수 있습니다. 포트 수를 늘리거나 심지어 데이터를 읽고 쓰는 등의 방법으로 부하를 늘릴 수도 있는데 그게 원하는 것 같습니다.

첫 번째 파일의 이름은 runoserver입니다.

#!/bin/bash
for port in `seq 50000 52000`;
        do
                netcat -l $port &
        done

두 번째 파일 이름은 runonclient입니다.

#!/bin/bash
for port in `seq 50000 52000`;
        do
                netcat serverIP $port &
        done

편집 - 귀하의 의견 질문에 대한 답변

동일한 포트에서 여러 연결을 동시에 열 수는 없습니다. 모든 사람이 포트의 웹 서버에 어떻게 액세스하는지 생각해 보면 80약간의 마법이 관련되어 있습니다. Google로 이동하여 포트 80에 연결하면 Google 웹페이지에 액세스할 수 있습니다. Google의 기본 응답은 다음과 같습니다.

I'm Google-
This was a valid request-
Continue all communication on port X- 
Then your computer and Google's server opens port X for reading and writing.

Port X would be a non-reserved, not in use, high numbered port. ex: 25643

따라서 포트 80에 대한 연결은 1초도 채 걸리지 않으며 로드 밸런싱 및 기타 TCP/IP 매직을 통해 초당 수백만 건의 요청을 처리할 수 있습니다. 이는 많은 세부 사항과 단계를 생략한 지나치게 단순화된 설명이지만 동시에 포트에 여러 연결을 만드는 방법을 어느 정도 설명한다는 점을 명심하십시오.

관련 정보