iWiz ShareBase

IT Specialist 윤태현의 iWiz ShareBase는 IT뿐 아니라 각종 잡다한 지식들을 함께 나누는 지식공유 커뮤니티입니다.

iWiz,ShareBase,윤태현,Java,JSP,EJB,IT,정보기술,웹프로그래밍,PHP,ASP,DBMS,MySQL,서버,네트워크,server,network,WAS,웹애플리케이션,블로그,blog,웹서버,DB,오라클,oracle,mysql,JRun,웹로직,톰캣,tomcat,아파치,자동차,EF쏘나타,로또 6/45

갤러리 Pixelgrapher.com | 로또 6/45 번호생성 및 통계 데이터 | 전체기사보기 | 전체글 #1 | 전체글 #2 | 전체글 #3 | 전체글 #4 | 전체글 #5 | 전체글 #6 | 전체글 #7 | 전체글 #8 | 전체글 #9 | 전체글 #10 |
HOME iWiz
ShareBase
Remember 0523 & 0818
지식은 나눌수록 커집니다 - iWiz's ShareBase
웹프로그래밍(기타) PHP, ASP, Perl, CGI 등 각종 웹프로그래밍에 관한 자료들입니다.


  iWiz(2004-01-04 22:45:01, Hit : 5250, Vote : 35
 http://www.wz.pe.kr

디버깅을 위한 JRun 구동 설정


웹 개발 또는 운영중 발생하는 각종 에러메시지 등을 파일로 보관하면 추후 디버깅 등에 있어 매우 유용할 것 입니다.

JRun 같은 경우는 기본으로 event log를 파일로 생성합니다만, 이벤트 로그만으로는 디버깅이 힘든 경우가 많습니다.  따라서 표준출력(stdout)이나 표준에러(stderr)의 내용을 파일로 저장해놓는 다면 매우 유용하게 사용될 수 있습니다.  클래스내에서도 표준출력이나 표준에러쪽으로 현재 동작 상황이나 디버깅 정보 등을 찍어내도록 적절히 코드를 넣는다면 개발작업이 한층 용이해질 것 입니다.

이를 위해서는 다음과 같은 쉘스크립트를 만들어 JRun 서버를 시작해야 합니다.

export JRUN_HOME=/home1/jrun
$JRUN_HOME/bin/jrun -$1 -nohup server_name 2>> $JRUN_HOME/logs/server_name-stderr.log >> $JRUN_HOME/logs/server_name-stdout.log &

이후 JRun의 시작 및 재시작, 종료 등은 이 스크립트를 통해서 하면 됩니다.  단, 명령행 인자로 start, stop, restart를 넘겨줘야 겠죠.  이후 JRun에서 표준출력으로 나가는 메시지는 logs 디렉토리 아래의 stdout.log 파일에, 표준에러는 stderr.log 파일에 기록이 됩니다.

이제 개발시 stdout.log파일과 stderr.log 파일을 tail -f 등의 명령으로 모니터링 하면서 테스트해보면 됩니다.

한가지 주의할 점은 JRun 구동중 Enterprise Application을 redeploy시키면 표준출력 에러가 끊기게 됩니다.  따라서 redeploy시에는 JRun을 재시작시켜 주는 것이 좋습니다.

그런데 위의 방식 같은 경우는 문제점이 하나 있습니다.  로그 로테이트가 되지 않기때문에 장기간 방치할 경우 자칫 로그 파일 용량이 너무 커져 이로 인한 오버헤드가 발생해 전체적인 퍼포먼스에 악영향을 줄 수 있습니다.  그렇다고 로그 로테이트를 위해 JRun을 자주 재시작하는 것도 안정적인 서비스 제공 측면에서 바람직하지 않습니다.

이를 해결하기 위한 Perl 스크립트를 만들었습니다.  이 Perl Script는 파이프를 통하여 실행되며, 실시간으로 스트림을 받아 파일로 기록합니다.  이 과정에서 로그파일을 매 일 단위로 JRun의 재시작 없이 로테이트 시켜줍니다.  아울러 부가기능으로는 특정 Exception 발생시 이 사실을 관리자에게 메일로 알려줄 수 있습니다.  운영중 문제 발생시 관리자가 재빨리 알아차릴 수 있는 매우 중요한 기능입니다.

이 스크립트를 사용하기 위해서는 아까의 쉘 스크립트를 다음과 같이 수정해야 합니다.

($JRUN_HOME/bin/jrun -$1 -nohup server_name | /home1/script/jrun_out.pl) 2>&1 | /home1/script/jrun_err.pl &

여기에서 로그파일이 저장되는 경로 및 prefix는 해당 펄 스크립트 파일내에 하드코딩 되어 있으므로, 해당 스크립트를 수정해주면 됩니다.

팁 하나를 추가하면 로그 파일 이름은 항상 prefix_로그일자 형식으로 되어 있으므로, 찾아서 모니터링하기 귀찮은 면이 있습니다.  다음과 같이 alias 정의해서 사용하면 더 편리하게 쓸 수 있습니다.

alias tailerr='tail -f $JRUN_HOME/logs/server-stderr.log.`date +%Y%m%d`'
alias tailevt='tail -f $JRUN_HOME/logs/server-event.log'
alias tailout='tail -f $JRUN_HOME/logs/server-stdout.log.`date +%Y%m%d`'

첨부된 파일에는 위에 소개한 표준출력, 표준에러 관련 스크립트 외에도, Apache Error 로그를 모니터링하다 JRun이 쓰레드 임계치에 도달하면 경보 메일을 보내주는 스크립트와 함께, 크론으로 돌며 JRun의 Event Log 파일을 백업할 수 있도록 생성 일자를 기준으로 파일 이름을 바꿔주는 스크립트도 함께 들어 있습니다. (아파치 에러로그 모니터링 스크립트를 사용하려면 httpd.conf에 ErrorLog |/home1/script/jrun_alarm.pl 라인을 추가하면 됩니다.)

샘플스크립트 : jrun_script.zip
* iWiz님에 의해서 게시물 이동되었습니다 (2010-02-03 16:57)



62   mod_throttle 모듈을 이용한 사용자 트래픽 제어  iWiz 2006/06/22 9150 0
61   Tomcat-Apache using JK2 connector  iWiz 2004/03/21 8547 41
60   RedHat 9.0에서의 JRun JSP 컴파일러의 문제점  iWiz 2004/01/04 5629 50
59   RedHat 9.0에서의 JRun-Apache 커넥터의 문제점  iWiz 2004/01/04 5247 48
58   JRun 4.0의 튜닝 관련 옵션  iWiz 2004/01/04 6023 68
57   JRun 4.0의 Activity 모니터링 방법  iWiz 2004/01/04 4992 57
56   JRun4.0: DataSource 커넥션풀 관련 옵션 [4]  iWiz 2004/01/04 6736 46
55   JRun에서 JSP 컴파일시 java 파일 생성하기  iWiz 2004/01/04 8148 63
54   JRun의 실제 서비스 운영시 고려사항  iWiz 2004/01/04 7624 44
53   수정된 인터넷 익스플로러에서 상호작용 ActiveX 컨트롤 활성화 가이드  iWiz 2006/03/03 8562 4
52   HTML 특수기호 엔터티(Entity) 테이블 [2]  iWiz 2006/03/03 15007 2
51   웹사이트의 새로운 혁명 Ajax [13]  iWiz 2005/11/22 5938 6
50   MSN 메신저 친구 자동등록 스크립트  iWiz 2004/10/12 6265 35
49   JavaScript MD5 해쉬 생성 함수  iWiz 2004/01/07 9204 35
48   JavaScript로 만든 진법변환 및 보수계산기 [4]  iWiz 2004/01/04 162233 51

1 [2][3][4][5]
 

Copyright 1999-2024 Zeroboard / skin by zero
iWiz ShareBase, ⓒCopyleft by iWiz.  For more information contact .
본 웹사이트에 게시된 이메일 주소가 전자우편 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며, 이를 위반시에는 정보통신망법에 의해 형사처벌됨을 유념하시기 바랍니다. [게시일 2004. 1. 31]