前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Tomcat启动一直卡在webapps/ROOT的解决方案

Tomcat启动一直卡在webapps/ROOT的解决方案

作者头像
全栈程序员站长
发布于 2022-06-29 09:05:35
发布于 2022-06-29 09:05:35
85400
代码可运行
举报
运行总次数:0
代码可运行

问题现象

  • 启动tomcat并查看日志发现启动到webapps/ROOT时卡住
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Apr 09, 2021 4:27:12 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Apr 09, 2021 4:27:12 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 766 ms
Apr 09, 2021 4:27:12 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 09, 2021 4:27:12 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.91
Apr 09, 2021 4:27:12 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /root/transform/tomcat-transform/webapps/ROOT

解决方案:在 JVM 环境中解决

打开 $JAVA_PATH/jre/lib/security/java.security 这个文件,找到下面的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
securerandom.source=file:/dev/random

替换成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
securerandom.source=file:/dev/./urandom

说一下这个random和urandom的区别:

tomcat启动的时候会实例化SecureRandom对象,实例化对象使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID产生。Tomcat使用SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。

Linux 中的随机数可以从两个特殊的文件中产生,一个是 /dev/urandom,另外一个是 /dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了。

这就是为什么会有 /dev/urandom 和 /dev/random 这两种不同的文件,后者在不能产生新的随机数时会阻塞程序,而前者不会(ublock),当然产生的随机数效果就不太好了,这对加密解密这样的应用来说就不是一种很好的选择。/dev/random 会阻塞当前的程序,直到根据熵池产生新的随机字节之后才返回,所以使用 /dev/random 比使用 /dev/urandom 产生大量随机数的速度要慢。

SecureRandom generateSeed 使用 /dev/random 生成种子。但是 /dev/random 是一个阻塞数字生成器,如果它没有足够的随机数据提供,它就一直等,这迫使 JVM 等待。键盘和鼠标输入以及磁盘活动可以产生所需的随机性或熵。但在一个服务器缺乏这样的活动,可能会出现问题。

目前tomcat7和tomcat8都是使用的这种方式来实例化SecureRandom对象的。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101865.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年6月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
重启Tomcat时,报错deployDirectory Deploying web application directory解决办法
今天在部署项目的时候,来来回回启动了个两三次,突然发现,tomcat竟然起不来了!
Cheng_Blog
2022/02/25
1.4K0
Tomcat启动时SecureRandom超级慢的问题
前言:最近部署springboot项目的时候,正常情况下启动很快,但是当我在centos上启动的时候卡在一个地方3-5分钟。所以查看一下问题。
王念博客
2019/07/24
1.5K0
Tomcat启动慢解决方法(本人CentOS7.4系统)
首先查看日志信息,查看因为什么而启动慢   在CentOS7启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的。Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥。 日志信息: 22-Apr-2017 19:33:07.623 INFO [localhost-startStop-1] org.apache.catalina.u
863987322
2018/01/24
1.4K0
CentOS7下Tomcat启动慢的原因及解决方案
  在一次CentOS 7系统中安装Tomcat,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的。Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候回通过随机生成一个密钥。 
拓荒者
2019/03/16
1.4K0
centos7通过wget安装tomcat9「建议收藏」
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说centos7通过wget安装tomcat9「建议收藏」,希望能够帮助大家进步!!!
Java架构师必看
2022/10/24
1.4K0
centos7通过wget安装tomcat9「建议收藏」
生产环境 Tomcat 调优实际操作
今天在新环境里部署tomcat, 刚开始启动很快,关闭之后再启动,却发现启动日志打印到
星哥玩云
2022/07/26
2K0
生产环境 Tomcat 调优实际操作
又出生产事故!那些年我曾犯过的错-SecureRandom
本人上周亲手写下了一个牛逼的bug,直接导致的结果是,晚上12点升级后台接口以后,第二天早上7点多开始,所有的app页面出现卡顿,白屏。
Bug开发工程师
2019/12/05
4.7K0
问题:tomcat启动卡顿
上文:问题:springboot多配置中心,解决无法同步更新(nacos/consul)
逍遥壮士
2022/01/18
1.3K0
问题:tomcat启动卡顿
Tomcat_01_简介
Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
Cyylog
2020/08/19
4710
linux 安装tomcat遇到的问题
romcat 下载的时候,要选择core 区域的文件,最下面的是source 源码,部署上去的话,是会报错的
allsmallpig
2021/02/12
8630
Centos7 Tomcat9 安装笔记
有两个月没更新博客,部分原因是这两月的工作一直没写Spark程序,而是在写前端,所以虽然期间一直想写但是没有想出从哪方面入手。后端框架用的SpringBoot,前端用的是JSP、BootStrap、Echarts等,前端主要做成了大屏的样子,之前写过一段时间前端,但是没有整理笔记,导致现在再写,有些东西还要去翻原来的代码,比较麻烦,所以一直想整理一些前端的笔记,但是由于不是专业的前端,不是写的很深入,只想把自己实现的的效果对应的代码总结一下,如果只写代码的话,看起来比较单调,所以我想能有写一些前端页面,在博客里放上连接,这样看起来会比较直观。现在的博客用的是hexo,代码托管在coding上,有些页面,比如菜单、整体布局的效果在这上面不太好展现,所以想在自己的服务器用SpringBoot搭一个完整的系统,那么就要从头开始,从搭建SpringBoot程序开始,虽然SpringBoot自身带了tomcat,但是我感觉自己安装的tomcat用起来会比较方便,这就是为什么先写tomcat的安装了。 之前用过也配置过tomcat,但是没有从头到尾的在服务器上配置,下面就记录一下我的安装过程及碰到的问题,方便后面我在其他的服务上部署。
小明互联网技术分享社区
2022/10/31
3930
Centos7 Tomcat9 安装笔记
linux tomcat 无法关闭 :8005端口未启动
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25283709/article/details/55061251
拓荒者
2019/03/16
6K0
Centos 下部署并优化Tomcat
类比Windows上的tomcat 启动,通过bin目录下startup.sh脚本来启动tomcat
缘、妙不可言
2019/09/09
7890
Tomcat安全加固与性能优化
为了更好的指导部署Tomcat应用容器,保证服务的安全稳定高性能的运行,需要对其进行加固和优化; 本次进行Tomcat容器调优加固主要从以下几个部分:
全栈工程师修炼指南
2022/09/29
2.6K0
Tomcat安全加固与性能优化
Tomcat启动不报错无法访问卡死
启动Tomcat的时候,没有任何错误,端口监听也正常。 就是启动后无法访问 原因是Tomcat 在启动的时候,调用了jdk的随机数,随机数非常慢,就卡住了。 将$JAVA_HOME/jre/lib/security/Java.security内,将securerandom.source的内容改为file:/dev/./urandom即可 注: Linux或者部分unix系统提供随机数设备是/dev/random 和/dev/urandom ,两个有区别,urandom安全性没有random高,但random
小贝壳
2020/03/05
2.8K0
Tomcat环境部署
环境说明 系统版本:CentOS 7.2 x86_64 软件版本:jdk-8u171、tomcat-8.0.27 Jdk的下载地址 Tomcat的下载地址
仙人技术
2020/04/29
7260
一声叹息,jdk竟然有4个random
接下来我们简单说下这几个类的使用场景,来了解其中的细微差别,和api设计者的良苦用心。
xjjdog
2019/07/10
1.2K0
centos安装tomcat「建议收藏」
安装jdk:https://www.cnblogs.com/Createsequence/p/11445211.html
全栈程序员站长
2022/09/22
1.3K0
centos安装tomcat「建议收藏」
企业级Tomcat部署实践及安全调优
惨绿少年
2017/12/27
2.3K0
企业级Tomcat部署实践及安全调优
Tomcat 服务详解[通俗易懂]
  Tomcat 是 Apache 的扩展,是 Apache 的一个子项目,它具备 Web 服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的 Java 代码 Servlet,同时将执行的结果以 HTML 代码的形式返回客户端。   Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,具有处理 HTML 页面的功能,然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。
全栈程序员站长
2022/08/29
1.5K0
Tomcat 服务详解[通俗易懂]
相关推荐
重启Tomcat时,报错deployDirectory Deploying web application directory解决办法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验