tomcat 似乎在不断重新加载

tomcat 似乎在不断重新加载

我绝对不是 tomcat 专家,但是在我看来这看起来不对劲......

Jan 24, 2014 10:05:34 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_21/jre/lib/amd64/server:/usr/java/jdk1.6.0_21/jre/lib/amd64:/usr/java/jdk1.6.0_21/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Jan 24, 2014 10:05:34 PM org.apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
java.net.BindException: Address already in use <null>:8080

我每 15 分钟就会在 catalina.out 文件中看到同样的日志块,并且这种情况在这个应用程序上已经持续了 2 年多。这是否意味着 tomcat 每 15 分钟就会重新加载一次?

答案1

第一个是正常的。第二个意味着您已经有另一个进程绑定到端口 8080。您是否有两个 Tomcat 实例正在运行?您是否试图每 15 分钟启动第二个实例?... 这当然会失败。

答案2

原来是 puppet。我们运行的 tomcat 版本不能正确处理“service tomcat status”,因此每次 puppet 运行都无法通过 tomcat 的状态检查,启动“service tomcat start”时会失败并生成上述日志条目。但是,我认为这会给我们的服务带来其他几个问题,所以我自己在 tomcat 启动脚本中编写了一个状态函数:

status() {
    proc=`ps aux | grep tomcat | grep catalina | awk '{print $2}'`
    numproc=`echo $proc | wc -w`
    if [ $numproc -gt 0 ]; then
        echo "tomcat (pid $proc) is running..."
    else
        echo "tomcat is stopped..."
    fi
}

相关内容