2011-09-23 5 views
2

이 CentOS 5.5 시스템에서 Java 데몬을 실행하려면이 YAJSW를 사용하고 있습니다. 그것이 잘 실행되지만 suddent에서 내가 이런 종류의 오류를 알아 차린 후 그냥 내려갑니다 생각합니다. 이런 종류의 문제를 피하기 위해 무엇을해야합니까? 일부 모니터링 도구를 사용하여 문제가 발생하는 즉시 모니터링하고 복구 할 수 있습니까?Java 래퍼를 데몬으로 사용

다음은 오류 목록의 일부입니다.

NFO|3090/0|11-09-19 20:22:13|Controller State: LOGGED_ON -> PROCESS_KILLED 
INFO|wrapper|11-09-19 20:22:13|restart process due to default exit code rule 
INFO|wrapper|11-09-19 20:22:13|set state RUNNING->RESTART 
INFO|wrapper|11-09-19 20:22:13|set state RESTART->RESTART_STOP 
INFO|wrapper|11-09-19 20:22:13|stopping process with pid/timeout 3090 45000 
INFO|3090/0|11-09-19 20:22:13|Controller State: PROCESS_KILLED -> WAITING_CLOSED 
FINEST|3090/0|11-09-19 20:22:13|wrapper manager received stop command 
INFO|3090/0|11-09-19 20:22:14|Controller State: WAITING_CLOSED -> USER_STOP 
INFO|wrapper|11-09-19 20:22:14|stop config name null 
INFO|wrapper|11-09-19 20:22:14|externalStop false 
INFO|wrapper|11-09-19 20:22:14|exit code linux process 0 
INFO|wrapper|11-09-19 20:22:14|killing 3090 
INFO|3090/0|11-09-19 20:22:14|gobler execption OUTPUT 3090 null 
INFO|3090/0|11-09-19 20:22:14|gobler execption ERROR 3090 null 
INFO|3090/0|11-09-19 20:22:14|gobler terminated OUTPUT 3090 
INFO|wrapper|11-09-19 20:22:14|process exit code: 0 
INFO|3090/0|11-09-19 20:22:14|gobler terminated ERROR 3090 
INFO|wrapper|11-09-19 20:22:14|set state RESTART_STOP->RESTART_WAIT 
INFO|wrapper|11-09-19 20:22:19|set state RESTART_WAIT->RESTART_START 
INFO|wrapper|11-09-19 20:22:19|starting Process 
INFO|3090/0|11-09-19 20:22:19|Controller State: USER_STOP -> UNKNOWN 
INFO|wrapper|11-09-19 20:22:19|Controller State: UNKNOWN -> WAITING 
INFO|wrapper|11-09-19 20:22:20|working dir /usr/local 
INFO|wrapper|11-09-19 20:22:20|error initializing script 
INFO|wrapper|11-09-19 20:22:20|exec:/usr/java/jdk1.6.0_18/bin/java -classpath /usr/local/yajsw-beta-10.2/./wrapperApp.jar:/usr/local -Xrs -Dwrapper.service=true -Dwrapper.console.visible=false -Dwrapper.visible=false -Dwrapper.pidfile=/var/run/wrapper.commServer.pid -Dwrapper.config=/usr/local/yajsw-beta-10.2/conf/wrapper.conf -Dwrapper.port=15003 -Dwrapper.key=-6288918147195966892 -Dwrapper.teeName=-6288918147195966892$1316434940036 -Dwrapper.tmpPath=/tmp org.rzo.yajsw.app.WrapperJVMMain 
INFO|wrapper|11-09-19 20:22:20|started process 8988 
INFO|wrapper|11-09-19 20:22:20|started process with pid 8988 
INFO|wrapper|11-09-19 20:22:20|set state RESTART_START->RUNNING 
INFO|wrapper|11-09-19 20:22:34|Controller State: WAITING -> STARTUP_TIMEOUT 
INFO|wrapper|11-09-19 20:22:34|restart process due to default exit code rule 
INFO|wrapper|11-09-19 20:22:34|set state RUNNING->RESTART 
INFO|wrapper|11-09-19 20:22:34|set state RESTART->RESTART_STOP 
INFO|wrapper|11-09-19 20:22:34|stopping process with pid/timeout 8988 45000 
INFO|wrapper|11-09-19 20:22:34|Controller State: STARTUP_TIMEOUT -> USER_STOP 
INFO|wrapper|11-09-19 20:22:34|stop config name null 
INFO|wrapper|11-09-19 20:22:34|externalStop false 
INFO|wrapper|11-09-19 20:23:19|process did not stop after 45000 sec. -> hard kill 
INFO|wrapper|11-09-19 20:23:19|killing 8988 
INFO|wrapper|11-09-19 20:23:19|send kill sig 
INFO|wrapper|11-09-19 20:23:19|exit code linux process 9 
INFO|wrapper|11-09-19 20:23:19|Controller State: USER_STOP -> PROCESS_KILLED 
INFO|8988/1|11-09-19 20:23:20|gobler execption OUTPUT 8988 null 
INFO|8988/1|11-09-19 20:23:20|gobler execption ERROR 8988 null 
INFO|wrapper|11-09-19 20:23:20|process exit code: 999 
INFO|8988/1|11-09-19 20:23:20|gobler terminated OUTPUT 8988 
INFO|8988/1|11-09-19 20:23:20|gobler terminated ERROR 8988 
INFO|wrapper|11-09-19 20:23:20|set state RESTART_STOP->RESTART_WAIT 
INFO|wrapper|11-09-19 20:23:25|set state RESTART_WAIT->RESTART_START 
INFO|wrapper|11-09-19 20:23:25|starting Process 
INFO|wrapper|11-09-19 20:23:25|Controller State: PROCESS_KILLED -> UNKNOWN 
INFO|wrapper|11-09-19 20:23:25|Controller State: UNKNOWN -> WAITING 
INFO|wrapper|11-09-19 20:23:25|working dir /usr/local 
INFO|wrapper|11-09-19 20:23:25|error initializing script 
INFO|wrapper|11-09-19 20:23:25|exec:/usr/java/jdk1.6.0_18/bin/java -classpath /usr/local/yajsw-beta-10.2/./wrapperApp.jar:/usr/local -Xrs -Dwrapper.service=true -Dwrapper.console.visible=false -Dwrapper.visible=false -Dwrapper.pidfile=/var/run/wrapper.commServer.pid -Dwrapper.config=/usr/local/yajsw-beta-10.2/conf/wrapper.conf -Dwrapper.port=15003 -Dwrapper.key=-6288918147195966892 -Dwrapper.teeName=-6288918147195966892$1316435005686 -Dwrapper.tmpPath=/tmp org.rzo.yajsw.app.WrapperJVMMain 
INFO|wrapper|11-09-19 20:23:26|started process 8989 
INFO|wrapper|11-09-19 20:23:26|started process with pid 8989 
INFO|wrapper|11-09-19 20:23:26|set state RESTART_START->RUNNING 
INFO|wrapper|11-09-19 20:23:40|Controller State: WAITING -> STARTUP_TIMEOUT 
INFO|wrapper|11-09-19 20:23:40|restart process due to default exit code rule 
INFO|wrapper|11-09-19 20:23:40|set state RUNNING->RESTART 
INFO|wrapper|11-09-19 20:23:40|set state RESTART->RESTART_STOP 
INFO|wrapper|11-09-19 20:23:40|stopping process with pid/timeout 8989 45000 
INFO|wrapper|11-09-19 20:23:40|Controller State: STARTUP_TIMEOUT -> USER_STOP 
INFO|wrapper|11-09-19 20:23:40|stop config name null 
INFO|wrapper|11-09-19 20:23:40|externalStop false 
INFO|wrapper|11-09-19 20:24:25|process did not stop after 45000 sec. -> hard kill 
INFO|wrapper|11-09-19 20:24:25|killing 8989 
INFO|wrapper|11-09-19 20:24:25|send kill sig 
INFO|wrapper|11-09-19 20:24:25|exit code linux process 9 
INFO|wrapper|11-09-19 20:24:25|Controller State: USER_STOP -> PROCESS_KILLED 
INFO|8989/2|11-09-19 20:24:26|gobler execption OUTPUT 8989 null 
INFO|8989/2|11-09-19 20:24:26|gobler execption ERROR 8989 null 
INFO|wrapper|11-09-19 20:24:26|process exit code: 999 
INFO|8989/2|11-09-19 20:24:26|gobler terminated OUTPUT 8989 
INFO|8989/2|11-09-19 20:24:26|gobler terminated ERROR 8989 

답변

0

너는 볼 수있다 : here - 이것은 자원 유출 일 수 있었다.

+0

이미 파일 설명자를 늘려서 너무 많은 파일을 열면 더 이상 문제가 발생하지 않습니다. 위에 첨부 된 로그 파일을 살펴보면 어떤 단서가없이 그냥 멈출 수 있습니까? – user837306

+1

리소스 누출 인 경우 그 원인과 추적 방법은 무엇입니까? – user837306

1

strace을 붙임으로써 리눅스 프로세스가 무엇을하는지 추적 할 수 있습니다.

YAJSW 자체에 문제가 있고 작업을 계속 실행하는 간단한 래퍼를 찾고 있다면 간단한 bash 스크립트로 수행 할 수 있습니다.

until myjob; do 
    echo "restarting myjob" 
    sleep 10 
done 

줄 1 myjob가 실행되는만큼 차단 호출하고 그 다음 0 이외로 종료하는 경우, 그것은 다시 시작됩니다.

+0

문제는 이제 응용 프로그램에서 어떤 문제가 나타나지 않습니다. 일부 실마리가 나타나기 때문입니다. 나는이 정보를 말한다. wrapper | 11-09-19 20 : 22 : 13 | 기본 종료 코드 규칙으로 인해 프로세스를 다시 시작한다. 그래서 당신이 제안한 스크립트는 쉘 스크립트 실행입니까? 달리는 법? 그래서 10ms 정도 자면 되나요? 문제는 내 애플리케이션이 계속 데이터를 수신함에 따라 계속 실행해야한다는 것입니다. – user837306

+0

그것은 bash 스크립트이고, 10 초 동안 잔다. 연속 스레드가 필요한 경우 왜 Java 자체에서 새 스레드를 시작하지 않습니까? 너무 많은 질문 ... 당신은 카페인을 시도 했습니까? – RHT

+0

decaf 소프트웨어는 무엇입니까? – user837306

0

Windows에서 매우 비슷한 래퍼 로그 출력을 보았습니다. 필자의 경우, 여러 응용 프로그램이 yajsw 인스턴스를 통해 실행되었습니다. 경우에 따라 yajsw가 Java 응용 프로그램을 모니터하는 자동 포트 선택이 제대로 작동하지 않는 것으로 보입니다.

wrapper.port = 24572 

수정 문제를 추가 실패하는 yajsw 인스턴스

. wrapper.conf를 수정 한 후 서비스를 다시 만듭니다. 나는 실패한 yajsw 인스턴스에만 이것을 추가해야했다. 다른 인스턴스가 포트를 자동 선택했습니다. 포트 번호는 중요하지 않습니다. 사용하지 않는 포트를 선택하십시오.

관련 문제