2009-03-27 6 views
1

우리는 Java 프로세스가 죽어 가면서 궁금한 점이 있습니다.Windows 상자에서 (java) 프로세스 사망을 모니터링하는 가장 좋은 방법은 무엇입니까?

응용 프로그램이 스택 추적을하지 않거나 로그에 아무 것도 쓰지 않으면 프로세스가 임의로 종료됩니다. 많이 사용되는 응용 프로그램이지만 문제는 한 달에 한 번 나타납니다.

현재 Process Monitor을 사용하고 있지만 다른 제안 사항도 환영합니다.

편집 :

그것의 분산 Java 응용 프로그램, 오라클에 연결, 사내 웹 프레임 워크 (예,이 끔찍한 생각이지만, 8 년 동안 실행 된 것)와 웹 로직에서 실행.

- 메모리 부족

? Brian Agnew에 따르면 우리의 로그는 java.lang.OutOfMemoryException을 잡을 것입니다.

로그에 충돌이 발생합니까? 자바가 기회를 잡을 것이라고 생각하지 않습니다. Java가 종료되기보다는 프로세스 레벨에서 죽음이 발생하고 있습니다.

+1

OutOfMemoryException에 의존하지 말고 모든 로그에 나타납니다. OOME을 버리기에 충분한 메모리가 부족할 수도 있으며 java 프로세스는 "자동으로"죽을 것입니다. – ordnungswidrig

답변

0

Linux NAGIOS 서버를 사용하여 Windows 시스템과 서비스의 상태를 모니터링 할 수 있습니다! 다음을보십시오 : nagios-monitoring-windows.

Java 응용 프로그램에 이와 같은 문제가있는 경우! 그것을 테스트하고 디버깅해야합니다! 응용 프로그램은 흔적도없이 죽지 않아야합니다! 로그 파일을 찾으십시오! 어떤 공급 업체에서 응용 프로그램입니까? 아니면 스스로 쓰여졌습니까? 다른 Log4J/Logger/Debug Level을 시행하십시오. 선인장 등으로 시스템을 모니터링하여 그러한 충돌 가능성을 줄이십시오. 소프트웨어 공급 업체에 문의하십시오.

에녹 메모리가 있습니까? 어쩌면 애플 리케이션 메모리가 부족합니까? 그것은 독립형 java 프로세스 또는 tomcat/jboss 서버의 Java 프로세스입니까?

충돌 시간을 로그에 기록 했습니까? 서로 다른 시간 조각에 나타 납니까? 아니면 시간이 거의 순환되는 것처럼 보입니까?

+0

메모리가 부족하면 VM이 중단되지 않습니다. 그것은 OS에서 더 많은 것을 할당하지 못하고 java.lang.OutOfMemoryExceptions를 던지지 만 VM은 계속 유지 될 것입니다 –

2

로그 파일 (stdout/stderr)과 종료 코드 (어떤 식으로 죽었는지 표시해야 함)을 캡처하는 일부 셸 스크립트로이 파일을 감쌀 수 있습니까? JVM 종료에서 WMI

을 사용하여 컴퓨터 수준의 통계를 캡처 할 수도 있습니다. VM 자체가 충돌하는 경우 스택 레벨, 컴퓨터 수준 디버그 정보가 포함 된 hs_err_pid ... 파일이 남습니다. 그런 다음이를 사용하여 VM 문제를 진단 할 수 있습니다. 자세한 내용은 this blog entry을 참조하십시오.

문제가 앱의 동작과 관련이 있다면 JConsole을 살펴볼 가치가 있습니다. 문제에 대한 설명에서 볼 수 있듯이이 문제는 저수준 VM 문제와 훨씬 비슷합니다.

(자바 버전 번호 등의 최신 VM을 사용하고 있다고 가정합니다.)

+0

전체 드라이브를 검사했고 파일 이름에 'hs_err'이 들어있는 파일이 없습니다. 이것은 VM이 충돌하지 않는다는 것을 의미합니다. WMI와 JConsole을 살펴 보겠습니다. 감사합니다. –

0

VisualVM과 모니터링 자바 응용 프로그램을 쉽게 새로운 도구입니다

https://visualvm.dev.java.net/description.html

"VisualVM과 그들이 실행하는 동안 Java 응용 프로그램에 대한 자세한 정보를 제공하는 도구입니다 그것은 직관적 인 그래픽 사용자 인터페이스를 제공합니다. 여러 Java 응용 프로그램에 대한 정보를 쉽게 볼 수 있습니다. "

관련 문제