jsvc経由でTomcatを起動する際のタイムアウト設定

tomcat を jsvc 経由で起動する際に、コンテナ起動時にエラーが発生していなくても exit status が 1 になる現象に遭遇したのでメモ。

原因

tomcat の起動(全warの起動含む)が、jsvc 内部で SERVICE_START_WAIT_TIME 変数として指定された時間内に完了していなかったため、結果としてコンテナは正常に起動しても exit status 1 を返していた。

対策1

  • daemon.sh を /etc/init.d/tomcat にコピーしてそれを直接叩く場合は、下記のようにタイムアウト時間(秒)を指定することにより、タイムアウト前に起動が完了すれば exit status として 0 を返すようになる。
/etc/init.d/tomcat --service-start-wait-time 25 start 

対策2

  • service を利用する場合は、bin/setenv.sh に以下のようにタイムアウト時間を設定すればOK。
SERVICE_START_WAIT_TIME=180