服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Tomcat - 快速解决Tomcat启动慢的问题,超简单

快速解决Tomcat启动慢的问题,超简单

2021-09-17 14:04沉默王二 Tomcat

这篇文章主要介绍了快速解决Tomcat启动慢的问题,超简单!具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

今天在帮一位同学解决了一个问题——tomcat启动超级慢,大概五六分钟。解决之后,只需要3秒钟即可启动。

问题怎么解决呢?

在tomcat的bin目录下找到catalina.sh,然后打开它,在以下位置添加一行代码:

-djava.security.egd=file:/dev/urandom

快速解决Tomcat启动慢的问题,超简单

2019年02月12日补充:很多朋友想知道原理,我就简单说明一下。

tomcat 7和tomcat 8在启动的时候会调用org.apache.catalina.util.sessionidgeneratorbase.createsecurerandom来产生一串安全随机数。

在linux(centos)环境下,随机数可以从两个特殊的文件中产生,一个是/dev/urandom,另外一个是/dev/random。

它们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。

/dev/random在不能产生新的随机数时会阻塞程序,直到根据熵池产生新的随机字节之后才返回;而/dev/urandom不会(ublock),当然,产生的随机数效果也不太好。

所以我们强制tomcat使用/dev/urandom而不是/dev/random来产生随机数,速度就会大幅提升——由好几分钟到只有几秒钟。

补充知识:tomcat 启动很慢,且日志上无任何错误的解决方案

1.问题

有一次把项目部署上去阿里云的时候,项目没有问题,但是启动tomcat的时候,启动到一半,半天才有反应,才执行完tomcat的启动进程。

tomcat 启动很慢,且日志上无任何错误,在日志中查看到如下信息:

log4j:[2015-10-29 15:47:11] info readproperty:172 - loading properties file from class path resource [resources/jdbc.properties]

log4j:[2015-10-29 15:47:11] info readproperty:172 - loading properties file from class path resource [resources/common.properties]

29-oct-2015 15:52:53.587 info [localhost-startstop-1] org.apache.catalina.util.sessionidgeneratorbase.createsecurerandom creation of securerandom instance for se

2.原因

tomcat 7/8都使用org.apache.catalina.util.sessionidgeneratorbase.createsecurerandom类产生安全随机类securerandom的实例作为会话id,这里花去了342秒,也即接近6分钟。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的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。

3.解决方案

有两种解决办法:

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这个文件。

可以通过在vi命令进行查找:

?securerandom.source

找到下面的内容:

securerandom.source=file:/dev/random

然后替换成:

securerandom.source=file:/dev/./urandom

以上这篇快速解决tomcat启动慢的问题,超简单就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://qingmiaogu.blog.csdn.net/article/details/86705890

延伸 · 阅读

精彩推荐
  • TomcatTomcat整体结构简单介绍

    Tomcat整体结构简单介绍

    这篇文章主要介绍了Tomcat整体结构简单介绍,Tomcat的本质是一个Servlet容器。一个Servlet能做的事情是:处理请求资源,并为客户端填充response对象,需要的朋友...

    叫我田露也行12302021-09-07
  • TomcatTomcat安装配置方法图文教程

    Tomcat安装配置方法图文教程

    这篇文章主要为大家详细介绍了Tomcat安装配置方法图文教程,java环境变量如何配置,Eclipse安装配置方法图文教程 ,为大家分享了三个教程,感兴趣的小伙...

    Tomcat教程网13292021-08-11
  • TomcatEclipse创建tomcat实现过程原理详解

    Eclipse创建tomcat实现过程原理详解

    这篇文章主要介绍了Eclipse创建tomcat实现过程原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以...

    海绵般汲取11642021-09-16
  • Tomcat如何查看tomcat的控制台输出的方法

    如何查看tomcat的控制台输出的方法

    这篇文章主要介绍了如何查看tomcat的控制台输出的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    CaiCaiNeo11932021-08-29
  • TomcatTomcat服务器的安全设置

    Tomcat服务器的安全设置

    tomcat是一个开源Web服务器,基于Tomcat的Web运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web站长的青睐。不过,在默认配置下其存在一定的安...

    IT专家网9002021-08-03
  • Tomcat一次tomcat源码启动控制台中文乱码的调试过程记录

    一次tomcat源码启动控制台中文乱码的调试过程记录

    平时在使用tomcat做一些服务的时候经常遇到各种乱码问题,下面这篇文章主要给大家介绍了一次tomcat源码启动控制台中文乱码的调试过程,需要的朋友可以...

    zhoutaoping199211852021-09-24
  • TomcatTomcat CentOS安装实现过程图解

    Tomcat CentOS安装实现过程图解

    这篇文章主要介绍了Tomcat CentOS安装实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考...

    agrin5842021-09-15
  • Tomcat解决Tomcat的maxPostSize属性的配置需要注意的问题

    解决Tomcat的maxPostSize属性的配置需要注意的问题

    这篇文章主要介绍了解决Tomcat的maxPostSize属性的配置需要注意的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    life is wonderful12012021-09-13