04-Apr-2017 20:36:28.782 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1137 ms 04-Apr-2017 20:36:28.831 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina 04-Apr-2017 20:36:28.831 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/9.0.0.M17 04-Apr-2017 20:36:28.864 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/manager 04-Apr-2017 20:38:21.525 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [112,059] milliseconds. 04-Apr-2017 20:38:21.571 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/manager has finished in 112,704 ms 04-Apr-2017 20:38:21.572 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/docs 04-Apr-2017 20:38:21.620 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/docs has finished in 48 ms 04-Apr-2017 20:38:21.623 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/examples 04-Apr-2017 20:38:22.097 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/examples has finished in 474 ms 04-Apr-2017 20:38:22.098 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/ROOT 04-Apr-2017 20:38:22.130 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/ROOT has finished in 32 ms 04-Apr-2017 20:38:22.130 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/host-manager 04-Apr-2017 20:38:22.171 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/langsoft/app/apache-tomcat-9.0.0.M17/webapps/host-manager has finished in 40 ms 04-Apr-2017 20:38:22.176 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080] 04-Apr-2017 20:38:22.188 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009] 04-Apr-2017 20:38:22.210 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 113427 ms
tomat 启动一切正常没有报错但启动非常慢
Tomcat 7/8/9都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID
SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。
在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。
1)如果Java.security.egd 属性或securerandom.source属性指定的是”file:/dev/random”或”file:/dev/urandom”,那么JVM 会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用 SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。
2)如果java.security.egd属性或securerandom.source属性指定的是其它已存在的URL,那么会调用SeedGenerator.URLSeedGenerator(url)方法进行初始化。
这就是为什么我们设置值为”file:///dev/urandom”或者值为”file:/./dev/random”都会起作用的原因。
在这个实现中,产生器会评估熵池(entropy pool)中的噪声数量。随机数是从熵池中进行创建的。当读操作时,/dev/random设备会只返回熵池中噪声的随机字节。/dev/random非 常适合那些需要非常高质量随机性的场景,比如一次性的支付或生成密钥的场景。
当熵池为空时,来自/dev/random的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。
那么什么是环境噪声?
随机数产生器会手机来自设备驱动器和其它源的环境噪声数据,并放入熵池中。产生器会评估熵池中的噪声数据的数量。当熵池为空时,这个噪声数据的收集是比较花时间的。这就意味着,Tomcat在生产环境中使用熵池时,会被阻塞较长的时间。
有两种解决办法:
1)在Tomcat环境中解决
可以通过配置JRE使用非阻塞的Entropy Source。
在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。
2)在JVM环境中解决
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom
替换成
securerandom.source=file:/dev/./urandom
上面的Tomcat是刚下载解压出来的默认配置(只保留Tomcat自带),但根据上面的启动日志,竟然花了3分多钟,然后仔细观察日志,主要是卡在初始化Session。开始我以为云服务器的问题,然后我在本地虚拟机上同样操作,问题重现,并且更换了Tomcat7,问题仍然出现,所以。通过搜索和分析,Tomcat的SessionID是通过SHA1PRNG算法计算得到的,SHA1算法需要一个密钥,这个密钥在Tomcat启动的时候随机生成一个,生成是使用了Linux随机函数生成器/dev/random。读取它相当于生成随机数字。搜索/dev/random,大概知道是什么鬼了:/dev/random会根据 噪音 产生随机数,如果噪音不够它就会阻塞。Linux是通过I/O,键盘终端、内存使用量、CPU利用率等方式来收集噪音的,如果噪音不够生成随机数的时候就会被阻塞。
解决方案:增大/dev/random的熵池
步骤如下:
1、安装熵服务
yum install rng-tools
2、启动熵服务
systemctl start rngd
相关推荐
在Eclipse中部署Tomcat服务器时,需要正确地配置Tomcat服务器,清除Tomcat服务器的缓存,添加项目路径到Tomcat服务器的配置文件中,并启动Tomcat服务器。按照这些步骤进行,可以确保在Eclipse中部署Tomcat服务器时...
### Tomcat 9 虚拟路径配置详解 在日常的Web开发中,Apache Tomcat作为一款免费开源的Servlet容器,被广泛应用于部署Java Web应用。对于开发者来说,灵活地配置虚拟路径(也称为虚拟主机或上下文路径)是提高项目可...
tomcat-juli.jar 用于在tomcat启动报错时除错
Tomcat无法正常启动的解决办法 教你如何解决Tomcat无法正常启动 欢迎下载
### Tomcat7启动或运行时报错:`java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl` #### 问题概述 在使用Tomcat7部署Web应用的过程中,可能会遇到启动或者运行时出现以下错误提示: ``` java....
### tomcat启动不了问题处理 在IT领域,Tomcat服务器是一款非常流行的开源Web服务器,它主要用来部署Java Web应用程序。然而,在使用过程中,用户可能会遇到Tomcat无法启动的问题。本文将详细探讨导致Tomcat启动...
Tomcat 报错 Service Temporarily Unavailable 解决方式 Service Temporarily Unavailableerror 是 Tomcat 中常见的一种错误,通常是服务器维护或容量问题引起的。解决这个错误的方法通常是重启服务器,但是有时候...
启动配置文件tomcat的配置文件,仅供参考
### Tomcat报错原因分析及解决方案 ...通过上述步骤,可以解决由于JAVA_HOME未定义或设置不正确导致的Tomcat启动失败的问题。此外,还需要注意确保JDK版本与Tomcat版本兼容,避免因版本不匹配而导致的其他潜在问题。
2. **Tomcat配置问题**:如果Tomcat服务器没有正确配置来识别Spring Boot项目中的JSP资源,则可能导致404错误。 3. **路径问题**:JSP文件的存储位置或访问路径不正确。 #### 解决方案 为了有效解决上述问题,我们...
### 上传WAR文件大小超过Tomcat 7最大文件限制报错 #### 背景介绍 在部署Web应用程序时,可能会遇到因WAR文件过大而无法正常部署的问题。具体表现为当WAR文件大小超过了Tomcat服务器配置的最大限制时,系统会拒绝...
然而,默认情况下,Tomcat服务的内存分配可能不足以支持大规模或高负载的应用场景,因此合理配置Tomcat的启动参数对于提高应用性能至关重要。 #### 二、Tomcat 7 Windows服务启动的基本概念 当我们将Tomcat安装为...
当Tomcat无法正常启动时,可能的原因多样,包括但不限于配置错误、环境问题、资源冲突或软件版本不兼容等。 首先,配置错误是常见问题之一。例如,`server.xml`是Tomcat的核心配置文件,其中包含了端口号、部署应用...
- 同样地,打开`tomcat9/webapps/host-manager/META-INF/host-manager.xml`并进行相同的修改。 3. **重启Tomcat服务:** - 使用命令行工具停止正在运行的Tomcat进程。可以通过执行`ps -ef | grep tomcat`来查找...
Tomcat 自动启动脚本配置 Tomato 自动启动脚本配置是指在 Linux 环境中,使用 shell 脚本来实现 Tomcat、JMS 和 Presto 的自动启动。在本文中,我们将介绍如何创建自动启动脚本、如何编写脚本信息、如何授权文件和...
### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...
Tomcat 连接池配置详解 Tomcat 连接池配置是 Web 应用程序中一个非常重要的组件,它负责管理和维护数据库连接,确保数据访问的高速和安全性。本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 ...
tomcat启动报错,启动超时,找不到类文件四渡赤水打成不是的
如果一切配置正确,MyEclipse将在控制台输出启动日志,同时你的Web应用也应该能在浏览器中访问。 11. **调试与优化**:MyEclipse允许你在服务器运行时进行调试。只需在项目上右键点击,选择“Debug As” → “Debug...