2011-09-23 42 views
2

我用這YAJSW在我的Centos 5.5的機器上運行的Java後臺程序。認爲它運行良好,但出於突發性,我注意到我得到這種錯誤,然後它只是下降。任何幫助我必須做什麼來避免這種問題?一旦出現問題,我可以使用一些監控工具來監控和恢復它嗎?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

您可以跟蹤一下linux的過程是通過附加一個strace給它做。

如果是YAJSW本身就是一個問題,如果你正在尋找一個簡單的包裝,讓您的工作和運行,它可以用一個簡單的bash腳本來完成。

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

1號線是一個阻塞調用只要myjob正在運行,如果它具有比0以外的任何退出的話,它會重新啓動。

+0

問題是現在我沒有看到從我的應用程序中指出任何問題,因爲如果它會顯示一些線索。由於缺省退出代碼規則,我只是說這個INFO | wrapper | 11-09-19 20:22:13 |重新啓動過程。那麼你建議的腳本是一個shell腳本運行嗎?如何運行?所以你問它睡10ms是嗎?問題是我的應用程序需要繼續運行,因爲它不斷接收數據。 – user837306

+0

這是一個bash腳本,它睡了10秒。如果你需要一個連續的線程爲什麼不在java本身啓動一個新的線程?太多的問題...你嘗試過無咖啡因嗎? – RHT

+0

什麼是decaf軟件呢? – user837306

0

我遇到了在Windows非常相似包裝的日誌輸出。就我而言,多個應用程序正在運行yajsw實例。看起來在某些情況下,yajsw監控Java應用程序的自動端口選擇無法正常工作。

在發生故障的yajsw例如,添加

wrapper.port = 24572 

修復該問題。修改wrapper.conf後重新創建服務。我只需要將它添加到失敗的yajsw實例中;其他實例成功自動選擇端口。端口號無關緊要,只需選擇一個未使用的端口即可。