2016-07-20 2 views
1

클라이언트에 웹 서버의 IP 주소가 여러 개 있습니다. 내 임무는 클라이언트와 각 서버 사이의 연결 품질을 확인하고 가장 낮은 대기 시간을 갖는 서버를 선택하는 것입니다.클라이언트와 서버 간의 연결 품질을 테스트하는 가장 좋은 방법

내 머리에 들어온 첫 번째 아이디어는 java.net.Socket 클래스를 사용하여 TCP 연결을 설정하고 시간을 측정하는 것이 었습니다. 그러나이 작업을 해결하는 것이 가장 좋은 방법이라고 확신하지 못합니다.

그래서, 내 질문은 :

1) java.net.Socket 적절한 솔루션을 사용 있나요?

2) 대답이 양수이면 단 하나의 연결을해야합니까? 아니면 평균 2-3 시간을해야합니까?

3) 대답이 부정적이면 Java에서 적절한 방법은 무엇입니까?

답변

2

1) 나는 아마도 당신이 어쨌든 사용하고자하는 java.net.URL에서 얻을 수있는 java.net.URLConnection를 사용하는 것이 좋습니다, 오버 슈팅 될 것 java.net.Socket를 사용하여 말하고 싶지만.

3) 당신은 당신이 가진 서버의 openConnection 방법을 통해 그들 각각의 URLConnection를 취득하고 그 connection 방법 걸리는 시간을 측정을 호출 한 많은 URL 인스턴스를 만들 수 있습니다.

이렇게하면 순수 네트워크 대기 시간뿐만 아니라 각 서버의 처리 시간을 측정 할 수 있으므로 하루가 끝나면 전체 콘텐츠가 다운로드됩니다. 방법으로 각 서버가 현재로드 된 상태를 측정하고 있습니다. 콘텐츠가 정적 페이지를 제공하는 순수한 웹 서버가 아닌 특정 종류의 애플리케이션에 의해 생성되는 경우 중요 할 수 있습니다.

이와 같은 작업을 수행 할 때는 매 순간마다 별도의 스레드에서이 프로세스를 수행하여 주 스레드가 매 순간 가장 잘 작동하는 서버를 사용하도록 권장합니다.

순수한 네트워크 대기 시간 문제인 경우 일반 소켓을 사용하는 것이 훨씬 쉽고 간단한 방법입니다.

2) 그렇습니다. 순수한 네트워크 대기 시간의 경우 평균 2-3 개의 연결이 적합하다고 생각하지만 URLConnection 솔루션을 사용하면 너무 많은 부하가 걸릴 수 있습니다.

도움이되기를 바랍니다.

관련 문제