톰캣을 종료하고자 할때 보통
[user@host]# catalina.sh stop Using CATALINA_BASE: /software/tomcat/servers/test Using CATALINA_HOME: /software/tomcat Using CATALINA_TMPDIR: /software/tomcat/servers/test/temp Using JRE_HOME: /usr Using CLASSPATH: /software/tomcat/bin/bootstrap.jar Using CATALINA_PID: /software/tomcat/servers/test/catalina.pid Tomcat did not stop in time. PID file was not removed.
종료명령을 내려도 위와같이 정상 종료가 되지 않는 경우가 있다.
이런경우 로그를 살펴보면 대략 3~40초정도 지나면 아래와 같이 오류가 발생하면서 종료되는것을 볼 수 있다.
INFO: JK: ajp13 listening on /0.0.0.0:8109 Feb 17, 2016 3:34:43 PM org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/14 config=null Feb 17, 2016 3:34:43 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 425 ms Feb 17, 2016 3:35:47 PM org.apache.coyote.http11.Http11Protocol pause INFO: Pausing Coyote HTTP/1.1 on http-0.0.0.0-8180 Feb 17, 2016 3:36:07 PM org.apache.catalina.connector.Connector pause SEVERE: Protocol handler pause failed java.net.UnknownHostException: centos: centos at java.net.InetAddress.getLocalHost(InetAddress.java:1496) at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:507) at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:288) at org.apache.jk.server.JkMain.pause(JkMain.java:739) at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:186) at org.apache.catalina.connector.Connector.pause(Connector.java:1156) at org.apache.catalina.core.StandardService.stop(StandardService.java:578) at org.apache.catalina.core.StandardServer.stop(StandardServer.java:793) 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:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414
대부분의 이유는 위와같은데 해당 호스트의 hostname
을 resolve
하지 못해 지연이 발생하는 것으로 볼 수 있다.
위의 문제를 해결하기 위해서는 아래와 같이 /etc/hosts
파일에 해당 서버의 아이피와 호스트명을 등록해주면 해결된다.
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.240.137 centos