2009-11-30 4 views

답변

1

내가보기 엔 그것을 의심. 가비지 콜렉션을 실행해도 프로세스가 연결 거부를 시작하지는 않습니다. 런타임이 GC 단계에서 사용량이 많은 경우 즉각적으로 코드를 실행하지 않는다는 의미입니다.

0

GC는 네트워크 연결이 시간 초과되거나 거절되는 데 너무 많은 시간이 걸리지 않을 것이라고 생각합니다. 나는 그것이 그 문제라는 것을 매우 의심한다.

1

이에 대한 자세한 정보가 필요합니다.

연결을 거부하는 웹 서버입니까?

어떻게 볼 연결이

FWIW 무거운 GC 동안 CORBA 응용 프로그램에서 거부 등 플랫폼 많은 메모리. 이것은 Connection Refused 메시지를받는 것과 같지 않습니다.

+0

실제로 이것은 연결을 거부하는 웹 서버 (Tomcat)입니다. – ripper234

3

"연결이 거부되었습니다"는 원격 호스트에 도달했지만 연결이 허용되지 않았다고 결정했습니다. GC가 문제라면 "연결 시간 초과"오류가 발생합니다.

+0

정말입니까? 당신은 더 많은 표를 얻었지만 여기에 GC가 영향을 미친다고 주장하는 사람들이 있습니다. – ripper234

+0

어떻게 보이지 않습니다. "연결 거부 됨"메시지가 원격 사이트에서 발생했기 때문에 사이트가 응답했기 때문에 해당 사이트의 GC가 책임지지 않습니다. 로컬 사이트의 GC로 인해 원격 사이트가 연결을 허용 할 수 없습니다. –

+1

이 경우 연결을 거부 할 수 있습니다. 즉, 여러 클라이언트가 동시에 연결되어 있지만 수락 할 수 없습니다 (예 : GC가 앱을 차단하고 있거나 다른 이유가있을 수 있음). 충분한 클라이언트가 차단되면 보류중인 승인()에 대한 소켓의 백 로그 한계에 도달하고 OS는 추가 연결 시도를 거부합니다. – nos

0

매우 그렇지만 가능합니다. GC라고 생각한다면, 에덴에서부터 permgen에 이르기까지 다양한 메모리 공간을 면밀히 모니터링하고 특히 어떻게 동작하는지 계속 모니터링하십시오.

교육적인 추측을해야한다면, 단일 연결과 관련된 실제 작업이 실행하는 데 오랜 시간이 걸리기 때문에 연결 풀을 소진 한 것으로 간주합니다. 이러한 작업은 완료됩니다 전에 초기 연결이 응답 된 경우 이후의 작업은 시간 초과를 유발합니다.

2

알아내는 가장 좋은 방법은 앱에서 GC가 얼마나 오래 걸리고 있는지 알려주는 것입니다. 시작 -verbose:gc 옵션을 사용하면 STDOUT에서 GC 스윕의 기록과 소요 시간을 확인할 수 있습니다. 더 많은 소개 GC 물건들 is at this summary

2

VM의 모니터링 메트릭이 없어도 알기 힘들지 만 gc 실행으로 인해 최소한 간접적으로 연결이 거부 될 수 있습니다. 무엇 일어날 수있다, gc 실행 각 요청의 프로세스 시간을 늘리거나 요청을 일시적으로 중단됩니다 따라서 클라이언트의 요청 패턴이 동일하게 유지되면 동시에 필요한 연결 수를 늘리는 것입니다.

예를 들어, 초당 10 개의 요청이 있고 각 요청에 처리하는 데 1 초가 걸리는 경우 서버는 적어도 평균 10 개의 동시 연결을 지원합니다. 클라이언트가 서버에 초당 10 개의 요청을 계속해서 보내지 만 어떤 이유로 각 요청이 1 대신 처리하는 데 2 ​​초가 걸리는 경우 서버는 20 개의 동시 연결을 지원해야하거나 더 적은 수만 인 경우 연결 시도 거부를 시작해야합니다 허용됩니다.

0

운영 체제에 허용 된 연결이 너무 많지만 처리해야하는 연결이 너무 많으면 제대로 연결을 거부 할 수 있습니다.이것이 사실이라면 Tomcat은 소켓을 충분히 빠르게 서비스 할 수 없습니다.

내 초기 추측은 내부적으로 스레드를 들고있는 것이므로 처리를 완료 할 수 없다는 것입니다. 스레드 풀이 충분히 큰가요? 모든 것이 통과해야하는 전 세계적으로 동기화 된 객체/메소드가 있습니까?

상황에 대해 자세히 알려주십시오.

0

Sporadic 연결이 거부되었습니다. 오류는 종종 DNS 또는 네트워크 하드웨어의 딸꾹질로 인해 발생합니다. 먼저 해결하려면 호스트 이름 대신 IP 주소를 사용하십시오. 두 번째 문제를 해결하려면 하드웨어가 고품질이어야합니다 (예 : 케이블이 없거나 주위에 전기가 공급되지 않는 등).

이 실제로 (I 소프트웨어의 이러한 철저하게 개발 조각으로, 믿지 않는)를 GC에 의한 경우

은, 당신이 특정 문제가 발생 유일한 사람이 없을 것이다.

오는 정상연결 오류가 실제로 다른 측면에 도달 할 수 없다는 것을 의미 거부, 명확해야합니다. 이것은 종종 잘못된 IP 주소 나 잘못된 포트, 연결을 차단하고있는 네트워크 회선의 해결 불가능한 호스트 이름 또는 일부 소프트웨어/하드웨어 방화벽으로 인해 발생합니다.

관련 문제