Tomcat 서버에 연결할 때 때때로 "Connection refused"메시지가 ConnectException으로 표시됩니다. 이러한 현상이 긴 GC 주기로 인해 발생할 수 있습니까? 긴 GC 주기로 인해 "Connection refused"예외가 발생할 수 있습니까?
는 (우리는 GC 사이클에 대한 자세한 로그 메시지를 얻기 위해 관련 JVM 플래그를 활성화하고,하지만 난 어쨌든 여기 물어 생각)답변
내가보기 엔 그것을 의심. 가비지 콜렉션을 실행해도 프로세스가 연결 거부를 시작하지는 않습니다. 런타임이 GC 단계에서 사용량이 많은 경우 즉각적으로 코드를 실행하지 않는다는 의미입니다.
GC는 네트워크 연결이 시간 초과되거나 거절되는 데 너무 많은 시간이 걸리지 않을 것이라고 생각합니다. 나는 그것이 그 문제라는 것을 매우 의심한다.
이에 대한 자세한 정보가 필요합니다.
연결을 거부하는 웹 서버입니까?
어떻게 볼 연결이
FWIW 무거운 GC 동안 CORBA 응용 프로그램에서 거부 등 플랫폼 많은 메모리. 이것은 Connection Refused 메시지를받는 것과 같지 않습니다.
"연결이 거부되었습니다"는 원격 호스트에 도달했지만 연결이 허용되지 않았다고 결정했습니다. GC가 문제라면 "연결 시간 초과"오류가 발생합니다.
정말입니까? 당신은 더 많은 표를 얻었지만 여기에 GC가 영향을 미친다고 주장하는 사람들이 있습니다. – ripper234
어떻게 보이지 않습니다. "연결 거부 됨"메시지가 원격 사이트에서 발생했기 때문에 사이트가 응답했기 때문에 해당 사이트의 GC가 책임지지 않습니다. 로컬 사이트의 GC로 인해 원격 사이트가 연결을 허용 할 수 없습니다. –
이 경우 연결을 거부 할 수 있습니다. 즉, 여러 클라이언트가 동시에 연결되어 있지만 수락 할 수 없습니다 (예 : GC가 앱을 차단하고 있거나 다른 이유가있을 수 있음). 충분한 클라이언트가 차단되면 보류중인 승인()에 대한 소켓의 백 로그 한계에 도달하고 OS는 추가 연결 시도를 거부합니다. – nos
매우 그렇지만 가능합니다. GC라고 생각한다면, 에덴에서부터 permgen에 이르기까지 다양한 메모리 공간을 면밀히 모니터링하고 특히 어떻게 동작하는지 계속 모니터링하십시오.
교육적인 추측을해야한다면, 단일 연결과 관련된 실제 작업이 실행하는 데 오랜 시간이 걸리기 때문에 연결 풀을 소진 한 것으로 간주합니다. 이러한 작업은 완료됩니다 전에 초기 연결이 응답 된 경우 이후의 작업은 시간 초과를 유발합니다.
알아내는 가장 좋은 방법은 앱에서 GC가 얼마나 오래 걸리고 있는지 알려주는 것입니다. 시작 -verbose:gc
옵션을 사용하면 STDOUT에서 GC 스윕의 기록과 소요 시간을 확인할 수 있습니다. 더 많은 소개 GC 물건들 is at this summary
VM의 모니터링 메트릭이 없어도 알기 힘들지 만 gc 실행으로 인해 최소한 간접적으로 연결이 거부 될 수 있습니다. 무엇 일어날 수있다, gc 실행 각 요청의 프로세스 시간을 늘리거나 요청을 일시적으로 중단됩니다 따라서 클라이언트의 요청 패턴이 동일하게 유지되면 동시에 필요한 연결 수를 늘리는 것입니다.
예를 들어, 초당 10 개의 요청이 있고 각 요청에 처리하는 데 1 초가 걸리는 경우 서버는 적어도 평균 10 개의 동시 연결을 지원합니다. 클라이언트가 서버에 초당 10 개의 요청을 계속해서 보내지 만 어떤 이유로 각 요청이 1 대신 처리하는 데 2 초가 걸리는 경우 서버는 20 개의 동시 연결을 지원해야하거나 더 적은 수만 인 경우 연결 시도 거부를 시작해야합니다 허용됩니다.
운영 체제에 허용 된 연결이 너무 많지만 처리해야하는 연결이 너무 많으면 제대로 연결을 거부 할 수 있습니다.이것이 사실이라면 Tomcat은 소켓을 충분히 빠르게 서비스 할 수 없습니다.
내 초기 추측은 내부적으로 스레드를 들고있는 것이므로 처리를 완료 할 수 없다는 것입니다. 스레드 풀이 충분히 큰가요? 모든 것이 통과해야하는 전 세계적으로 동기화 된 객체/메소드가 있습니까?
상황에 대해 자세히 알려주십시오.
Sporadic 연결이 거부되었습니다. 오류는 종종 DNS 또는 네트워크 하드웨어의 딸꾹질로 인해 발생합니다. 먼저 해결하려면 호스트 이름 대신 IP 주소를 사용하십시오. 두 번째 문제를 해결하려면 하드웨어가 고품질이어야합니다 (예 : 케이블이 없거나 주위에 전기가 공급되지 않는 등).
이 실제로 (I 소프트웨어의 이러한 철저하게 개발 조각으로, 믿지 않는)를 GC에 의한 경우은, 당신이 특정 문제가 발생 유일한 사람이 없을 것이다.
오는 정상연결 오류가 실제로 다른 측면에 도달 할 수 없다는 것을 의미 거부, 명확해야합니다. 이것은 종종 잘못된 IP 주소 나 잘못된 포트, 연결을 차단하고있는 네트워크 회선의 해결 불가능한 호스트 이름 또는 일부 소프트웨어/하드웨어 방화벽으로 인해 발생합니다.
- 1. 데이터 캐싱으로 인해 간섭이 발생할 수 있습니까?
- 2. Java GC에서 긴 GC 시간 이벤트에 등록
- 3. 고정 소수점 산술로 인해 문제가 발생할 수 있습니까?
- 4. .net mvc routing으로 인해 JavaScript 오류가 발생할 수 있습니까?
- 5. EDT 위반으로 인해 외부 소프트웨어에서 NullPointerException이 발생할 수 있습니까?
- 6. 이로 인해 정의되지 않은 동작이 발생할 수 있습니까?
- 7. 이 코드로 인해 "500"내부 서버 오류가 발생할 수 있습니까?
- 8. 메모리 누수로 인해 UITableView 스크롤에 문제가 발생할 수 있습니까?
- 9. sproc과 호출 코드의 불일치로 인해 빌드 오류가 발생할 수 있습니까?
- 10. JNLP 실행 소프트웨어 업데이트로 인해 충돌이 발생할 수 있습니까?
- 11. 코드로 인해 파이썬에서 실제 메모리 누수가 발생할 수 있습니까?
- 12. 마이너 GC 시간과 총 휴지 시간 사이에 큰 불일치가 발생할 수 있습니까?
- 13. GC 콜을 교착 상태로 만들 수 있습니까? 콜렉트와 GC.
- 14. MobileMe Connection - Cocoa
- 15. AS3에서 GC 사용 안 함
- 16. Drools 업데이트 방법으로 인해 문제가 발생할 수 있습니다
- 17. SVN 업데이트로 인해 충돌이 발생할 수 있는지 확인 할 수 있습니까?
- 18. Monotouch threads, GC, WCF
- 19. 여러 동일한 GUID가 발생할 수 있습니까?
- 20. 프로그램 카운터에 잘못된 주소가 발생할 수 있습니까?
- 21. UIWindow # addSubview로 메모리 누수가 발생할 수 있습니까?
- 22. 어떻게 이런 일이 발생할 수 있습니까?
- 23. C# - 여기서 오버플로 검사가 발생할 수 있습니까?
- 24. .NET의 스택에서 메모리 누수가 발생할 수 있습니까?
- 25. 스마트 포인터로 슬라이스가 발생할 수 있습니까?
- 26. SynchronizationContext.Post 또는 .Send로 예외가 발생할 수 있습니까?
- 27. perforce connection
- 28. Sun GC maxtenuringthreshold
- 29. 세로 모드의 장치에로드 된 경우 왜 GWT-App로드로 인해 구문 분석 오류가 발생할 수 있습니까?
- 30. 외부 테이블에 대한 ODBC 액세스로 인해 데이터가 손상되거나 잠금이 발생할 수 있습니까?
실제로 이것은 연결을 거부하는 웹 서버 (Tomcat)입니다. – ripper234