linux下tomcat启动太慢

前两天在阿里云esc服务器上部署项目,第一次启动成功。重启结果失败,怎么也启动不了,后台发现不是启动失败,是还没启动成功,shutdown也关不掉,用命令ps -ef|grep tomcat查看tomcat端口占用情况,确实端口被占用了,然后就网上找原因。一开始搜tomcat关闭了,推荐的方法是在tomcat/bin/shutdown.sh文件中增加一个参数。

把exec "$PRGDIR"/"$EXECUTABLE" stop "$@"

改成exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"

然后在tomcat/bin/catalina.sh脚中,加入下面这增加

if [ -z "$CATALINA_PID" ]; then

    CATALINA_PID=$PRGDIR/CATALINA_PID

    cat $CATALINA_PID

fi

可是添加后问题依然没有解决。

又有人说可以用JAVA_HOME下bin目录中的jstack+端口号,例如  jstack+30665  来打印信息,排查错误,很可能是存在死循环。可能是不太会用这个工具,依然没找到原因。

因为找原因的时间有点长,tomcat居然启动了,用了半个多小时。。。那就可能是启动中在某个环节卡了太长时间,最后找到原因,下面的内容是从网上找的。

第一种解决方式:

random和urandom是linux的提供的随机伪设备,提供永不为空的随机字节数据流,许多加密解密程序需要用到它们提供的随机数。它们的区别在于:random 依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用。这也就是tomcat启动变慢的原因;而进程忙等待,但是数据的随机性也不高。urandom不依赖系统的中断,也就不会造成

可以通过od转化为16进制后查看生成的随机数据:

 

linux下tomcat启动太慢_第1张图片

 

但是使用random生成随机数的时候一直刷不出来:

 

第二种解决方式:

random是依赖于系统中断产生的随机数,因此可以使用外部进程产生中断,增加产生随机数的速度,安装rng-tools这个软件可以增加产生随机数的速度。

yum install rng-tools

systemctl start rngd // 开启服务

然后再使用random生成随机数:

 

这样tomcat启动就快多了,感谢这位博主。

你可能感兴趣的:(linux下tomcat启动太慢)