Centos7.2下tomcat8 shutdown报错8005端口

时间:2022-04-02 16:54:37

最近遇到这个问题,

在Centos7.2下搭建了一个tomcat8,开始用的挺好,突然有一次shutdown.sh关闭tomcat时报错了,里面有8005啥的

以后再也用不了tomcat了,shutdown.sh永远失败,重启服务器也不行(云服务器)

(ps:最新发现,不是tomcat不能用了,是启动太慢了,我误认为不能用了,上述错误出现后,杀死tomcat进程或者重启服务器就可以解决,唉,小白苦逼啊)

最后找到原因:

tomcat在启动时会使用如下几个端口

Centos7.2下tomcat8 shutdown报错8005端口

其中8005端口使用的比较晚,也就是说,我们刚startup.sh的时候,使用netstat -tlpn查看,是没有8005端口的,过一段时间tomcat完全启动

之后,才会出现8005端口占用。

而出现我那种情况的原因是,在tomcat启动后,8005端口占用前,我就shutdown.sh了,就报错8005云云。。。

所以以后shutdown.sh的时候确保8005已占用就好了


20161014更新:

在8005端口启动前就shutdown.sh,导致了异常,为什么别人没有遇到?原来别人的tomcat在1s内就启动8005端口了,而我的tomcat启动为什么这么慢?

查看tomcat log

Centos7.2下tomcat8 shutdown报错8005端口

大红框为一次完整启动tomcat打印的log,图中可以看出耗时在小红框标记的地方,经搜索,终于找到启动慢的根源了,原来是计算随机数的时候阻塞了。。

详细说明点击http://blog.csdn.net/rankun1/article/details/52815960

解决方法:

直接配置jdk securerandom.source为urandom解决:

打开$JAVA_HOME/jre/lib/security/java.security这个文件,找到securerandom.source配置项

修改为:

securerandom.source=file:/dev/./urandom
好了好了,tomcat启动快了,800ms搞定,我没机会在8005启动前shutdown.sh了,不会异常了,
这个问题可折磨死小白我了,到此完美解决