나는 커스텀 애플리케이션에서 자바 서비스 래퍼를 사용하여 꽤 오랫동안 잘 작동했습니다. 지난 며칠 동안 애플리케이션을 새 버전으로 업데이트 한 후 JVM이 정지하기 시작했고 래퍼가 로그에 다음을 인쇄합니다. JVM이 멈춘 것 같습니다 : JVM에서 신호 대기 중 시간이 초과되었습니다.자바가 걸려있는 것처럼 보입니다
그런 다음 자동으로 JVM을 종료하고 응용 프로그램을 다시 시작합니다. 이것은 약 10 시간의 실행 후에 발생하기 때문에 디버깅이 더 어려워집니다.
물론 나는 우리가 변경 한 것을 살펴볼 것입니다. 그러나이 유형의 문제를 일으키는 것으로 의심되는 큰 변화는 없었습니다.
어디에서 무슨 일이 일어나는지 알아볼 수 있습니까? 응용 프로그램의 디버그 메시지는 흥미로운 것을 나타내지 않습니다. JVM이 그냥 충돌하면 일반적으로 덤프가 생성되어 디버깅에 도움이되지만 걸려 있기 때문에 덤프가 생성되지 않습니다. 서비스를 다시 시작하지 않으면 JVM에서 유용한 정보를 얻으려면 다시 시작할 수 있습니다.
JVM이 일반적인 프로그래밍 오류에서 벗어나지 않아야합니다. 이전에 JVM이 멈추는 원인은 무엇입니까?
Linux RHEL4, Java 1.6.0, Intel 32 비트. 스레드 및 메모리 사용량을 모니터링하고 있습니다. 지금까지는 그 중 많은 것을 사용하지 않았습니다. 우리는 스레드를 많이 사용하지 않습니다. 우리는 애플리케이션 시작 시간에 몇 분을 조사하여 처리 할 것이 있는지 확인합니다. –
10 시간은 얼마나 일정합니까? 실제로 몇 가지 가능성이 있습니다 : 자원의 고갈 또는 임의의 데드락/지연. 어떤 종류의 응용 프로그램입니까? –
전혀 일치하지 않습니다. 지금까지 3 번만 발생했습니다. 실제로 평균은 10 시간보다 약간 높습니다. 그것은 12, 14, 19시에 일어났습니다. 시도하고 시도 할 것은 자동 재시작이 아닌 것으로 설정되어 상태가 발생할 때마다 상태를 조사 할 수 있습니다. –