2013-08-27 2 views
2

localhost에는 백엔드 서버 응용 프로그램으로 실행되는 몇 가지 Java 응용 프로그램 (jar)이 있습니다. 이 프로그램들은 가상 박스 안에 있습니다 (RHEL 6.2).
항아리 중 하나가 5 일 동안 작동 한 후에 작동을 멈췄습니다. 예외가 발생하지 않았습니다 (catch 블록에서 catch 될 수있는 오류의 출력이 표시되지 않음). 이 문제의 원인을 알아 내기 위해 println's을 입력하고 셸 스크립트를 사용하여 명령 행에서 > 연산자를 사용하여 텍스트 파일로 출력을 리디렉션했습니다.
약 4 ~ 5 일 후에, 우리는 우리가 항아리가 아직 실행 된 것을 볼 수있는 상황에 직면하지만, 텍스트 파일이나 응용 프로그램이 항목을 기록했는데되는 데이터베이스에 아무것도 출력되지 않았습니다.
아마도 가상 파일이 처리 할 수있는 텍스트 파일이 너무 커지면 기본적으로 알 수 있습니다.실행중인 Java 응용 프로그램에서 문제를 찾는 더 나은 방법은 무엇입니까?

Java에서 이러한 런타임 문제는 어떻게 발생합니까? C++에서 우리는 valgrind, Purify 등을 가지고 있지만,
1. Java에서 그런 도구가 있습니까?
2. 매우 큰 텍스트 파일 문제를 직면하지 않고 println을 출력하는 것을 어떻게 권장합니까? 아니면 더 좋은 방법이 있을까요?

+0

로깅 출력하는 가장 좋은 방법은 응용 프로그램의 상태입니다 기능, 로그 파일을 롤오버 구성하는 쉬운 방법을 제공합니다. 'Log4J' 또는'SLF4J' 로깅 라이브러리도 참조하십시오. 로그 라이브러리는 로그 파일을 너무 크게 만들지 않도록 롤링을 지원합니다. 또한 응용 프로그램에서 파일 크기가 임계 값보다 커지면 롤링을 수행해야합니다. –

+0

또한 'JProfiler'또는 'VisualVM'을 사용하여 응용 프로그램을 모니터링하여 응용 프로그램의 현재 메모리 및 기타 중요한 상태를 확인하십시오. 또한 응용 프로그램이 멈추는 위치를 파악하는 데 도움이 될 수 있습니다. –

답변

1

보다는 방법의 log4j 같은 도구를 사용하는 방법에 대한 System.out에로 인쇄. Log4J는 로그 파일 크기 조정, 버전 관리 및 삭제를 허용합니다.

http://logging.apache.org/log4j/1.2/

당신은 또한 당신의 서버 아키텍처를 다시 고려할 수 있습니다 참조하십시오.

1

어떻게 자바에있는 같은 런타임 문제가 있습니까? C++에서 우리는 valgrind, Purify 등을 가지고 있지만, 1. Java에서 그런 도구가 있습니까?

사용할 수있는 자바 프로파일 러가 많이 있으며, 거의 무료입니다. VisualVM이라는 자바 배포판이 있습니다. 당신은 프로파일 러와 프로세스를 첨부 할 수 있지만, 프로파일은 당신이 당신이 매우-큰 TEXTFILE의 문제에 직면하지 않고 우리에게 출력에 println 년대를 추천 할 것입니다 어떻게 메모리 누수, CPU intenstive 작업 등

  1. 과 같은 몇 가지 문제를 찾는 데 도움이됩니다 ? 아니면 더 좋은 방법이 있을까요?

SYSOUT이 문제를 해결하는 좋은 방법이 아니다. log4j와 같은 로거는 매우 로버 스트하고 사용하기 쉬운 API를 제공합니다. Log4j의도 등

관련 문제