2012-06-11 3 views
0

우리가 살고있는 서버에서는 외부 서비스에 대한 요청이 너무 빨리 시작되어 실패하기 시작합니다. 이것은 짧은 응답 시간으로 시작됩니다. 흥미로운 점은 동일한 서비스 (Apple Purchase 및/또는 Facebook)를 호출하는 일련의 동일한 서버가 있고 노드 중 하나만 응답 시간이 길다는 것입니다. 그러므로 서비스가 느려지는 것이 아닙니다. 이 문제는 희귀하고 재현하기가 어렵지만 여전히 관련이 있습니다.부두 HttpExchange가 모든 요청을 시간 초과합니까?

노드의 스레드 수와 메모리 수는 정상적으로 보이고 시간 초과는 예외가 아닙니다. Java 프로세스를 다시 시작하면 항상이 문제가 해결됩니다.

외부 서비스가 실제로 느린 경우 우리의 응답 시간 그래프를 보면 알 수 있겠지만, 일부 노드는 여전히 그 노드가 다운 된 것으로 간주합니다. 느린 응답 시간은 우리 편에서 버그의 기능 일 수 있기 때문에 이는 당분간의 추측입니다.

아래 코드를 추가 했으므로 모든 요청에 ​​대해 새 Exchange 개체를 만들어 잘못된 데이터 캐싱이 없다는 것을 확실히 알고 있습니다.

public void doSomething() { 
    HttpExchange httpExchange = new HttpExchange(); 
    httpExchange.setURL("SOME_URL"); 
    httpExchange.setMethod("GET"); 
    httpExchange.setEventListener(listener); 
    httpExchange.setTimeout(this.timeout); 
    this.client.send(httpExchange); 
} 

누구도 Jetty HttpClient와 비슷한 문제가 있습니까? Jetty Http Client가 이런 식으로 동작 할 수있는 알려진 가장자리 경우는 있습니까?
부두가 과부하 상태인지 확인하려면 부두 내부에 공유 객체가 있습니까?

답변

0

참고로 사이트에 Bug Tracking을 출시했으며 마침내 재현성, 해결 방법 및 수정 사항을위한 일련의 단계를 완료했습니다.

그러나 수정 중이므로 "현재 내 .onExpire() 이벤트 처리기에서 HttpExchange.cancel()을 호출하여이 문제를 해결하고 있습니다.이 같은 수정 프로그램을 테스트 할 수 있습니까?" - 웨 몬 시몬즈 참조 Bug Tracking

관련 문제