質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

0回答

2100閲覧

Tomcat(JSVC)停止時に終了ステータス「255」でfailedとなる

kikikiki

総合スコア0

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2021/05/27 01:49

編集2022/01/12 10:55

前提・実現したいこと

初めて質問させていただきます。
現在Tomcatを使用してお客様のクラウド環境にてWebサーバーを運用しています。
最近になって日次で実施しているTomcatの停止処理にて定期的にエラーが発生するようになりその原因を調査しています。
調査は継続して実施しているのですが、依然はっきりとした原因が判明しておらずこちらに質問させていただきました。

発生している問題・エラーメッセージ

OSはRedHat7でSystemdとjsvcを用いてサービスの管理しており、毎日0時(cron使用)にバックアップ処理の為Tomcatを停止、起動しているのですが、数ヶ月前から停止処理の際にエラーを検知するようになりました。
この停止処理ではsystemctl stop tomcat.serviceで停止処理を実行し、systemctl is-failed tomcat.serviceで異常なく停止処理が実行されたかを確認しています。
こちらのsystemctl is-failed tomcat.serviceの判定にてTomcatサービスがfailedになっており、jounalctlで詳細を調べたところ終了ステータスが「255」で終了しているためfailedと判定されているようでした。
しかしfailedの判定は出ているのですが、Tomcat自体は停止できており、その後の起動処理は正常に終了している状況です。
以下jounalctlで出力したTomcatの停止処理部分のメッセージです。

5月 20 18:40:27 localhost.localdomain systemd[1]: Stopping Tomcat... -- Subject: Unit tomcat.service has begun shutting down -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit tomcat.service has begun shutting down. 5月 20 18:40:27 localhost.localdomain systemd[1]: tomcat.service: control process exited, code=exited status=255 5月 20 18:40:29 localhost.localdomain systemd[1]: Stopped Tomcat. -- Subject: Unit tomcat.service has finished shutting down -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit tomcat.service has finished shutting down. 5月 20 18:40:29 localhost.localdomain systemd[1]: Unit tomcat.service entered failed state. 5月 20 18:40:29 localhost.localdomain systemd[1]: tomcat.service failed.

該当のソースコード

以下、現在使用しているTomcatのsystemdの設定及び、jsvcの起動スクリプトの中身となります。

unit

1[Unit] 2Description=Tomcat 3After=network.target 4 5[Service] 6Type=forking 7PIDFile=/var/run/tomcat.pid 8User=root 9Group=root 10Environment="CATALINA_HOME=/usr/local/tomcat" 11Environment="CATALINA_BASE=/ap/tomcat" 12Environment="CATALINA_PID=/var/run/tomcat.pid" 13Environment="JAVA_HOME=/usr/java/latest" 14Environment="TOMCAT_USER=tomcat" 15EnvironmentFile=/ap/tomcat/bin/setenv.sh 16 17ExecStart=/usr/local/tomcat/bin/jsvc.sh start 18ExecStop=/usr/local/tomcat/bin/jsvc.sh stop 19ExecReload=/usr/local/tomcat/bin/jsvc.sh restart 20 21[Install] 22WantedBy=multi-user.target

bash

1#!/bin/sh 2 3start() { 4 /usr/local/tomcat/bin/jsvc \ 5 -umask 022 \ 6 -debug \ 7 ${CATALINA_OPTS} \ 8 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ 9 -Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties \ 10 -cp ${CLASSPATH}:${CATALINA_HOME}/bin/bootstrap.jar \ 11 -Dcatalina.base=${CATALINA_BASE} \ 12 -Dcatalina.home=${CATALINA_HOME} \ 13 -Djava.endorsed.dirs=${CATALINA_HOME}/common/endorsed \ 14 -Djava.io.tmpdir=${CATALINA_BASE}/temp \ 15 -user ${TOMCAT_USER} \ 16 -home ${JAVA_HOME} \ 17 -outfile ${CATALINA_BASE}/logs/catalina.out \ 18 -pidfile ${CATALINA_PID} \ 19 org.apache.catalina.startup.Bootstrap 20} 21 22stop() { 23 /usr/local/tomcat/bin/jsvc \ 24 -stop \ 25 -pidfile ${CATALINA_PID} \ 26 org.apache.catalina.startup.Bootstrap 27} 28 29case "$1" in 30 start) 31 start 32 ;; 33 stop) 34 stop 35 ;; 36 restart) 37 stop 38 start 39 ;; 40 *) 41 echo $"Usage: jsvc {start|stop|restart}" 42 exit 1 43 ;; 44esac

試したこと

調査したところjsvcで指定したPIDファイルが読み込めない場合に終了ステータスが「255」となるようなので、開発の環境にて停止処理の前に実際にPIDファイルを削除し確認したところ、同様に終了ステータスが「255」となりサービスがfailedになることまでは確認できています。
複数回発生しているjournalctlのログでは、Tomcatのstop処理の途中に0anacronや0yum-cronが実行された場合に当エラーが発生しているようなので、これらのcronがPIDファイルに何かしら影響を及ぼすことで読込ができなくなっているのでは?と推測しているのですが実際にそうなのか確証が得られない状況です。

補足情報(FW/ツールのバージョンなど)

以下OS等の情報となります

  • OS:RedHat 7
  • Tomcat:5.5.36
  • jsvc:1.0.10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問