2014年9月12日金曜日

サーバーOSのシャットダウン時にtomcatが正常にシャットダウンしない件

仮想環境で新たにアプリが動作するサーバー環境を作成したところ、
OSのシャットダウン時にTomcatが正しく終了せず、OSが終了できなくなってしまいました。

色々と調べたところ、解消したので経緯を残しておきます。


事象

サーバOS上で、shutdown -h nowを行うと、tomcatの終了スクリプトで待ち状態。そのうち
UnknownHostExceptionを出して、うんともすんともいかなくなる。


java.net.UnknownHostException: hostname: hostname
    at java.net.InetAddress.getLocalHost(InetAddress.java:1360)
    at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:490)
    at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:288)
    at org.apache.jk.server.JkMain.pause(JkMain.java:726)
    at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
    at org.apache.catalina.connector.Connector.pause(Connector.java:1037)
    at org.apache.catalina.core.StandardService.stop(StandardService.java:578)
    at org.apache.catalina.core.StandardServer.stop(StandardServer.java:788)
    at org.apache.catalina.startup.Catalina.stop(Catalina.java:662)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:629)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)


結果

ホスト名が原因ではなく、tomcatのサービスが正しくインストールされていなかったため。

過程

・ホスト名の解決
 /etc/hostsに、hostnameを書いていなかったので、書きました。

しかし、ダメ。

・シャットダウンの詳細確認

きちんと動いているサーバーもあるので、シャットダウンの時の内容を比較。
すると、tomcatの終了順が違う事がわかりました。

終了順をさらに調べていくと、以下な感じ
cd /etc/rc.d

【OKケース】

[root@host rc.d]# ls -l -R | grep tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
【NGケース】

[root@host rc.d]# ls -l -R | grep tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx  1 16  9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
終了スクリプトがない・・・


というわけで、


chkconfig --del tomcat
chkconfig --add tomcat
chkconfig tomcat on


を実施し、きちんと生成されて、正しくシャットダウンできる事が確認できました。

インストールに失敗したのかもしれません・・・


0 件のコメント: