2017-11-07 11:12:53 foreversilent 阅读数 612
在网上找了好多的方法,都是说在catalina.sh中添加一行xxxx,那个其他人可以用的话,你们就用吧 ,反正我的服务器是没有生效,最后在

博客主页:http://blog.csdn.net/chszs

找到了解决办法,不过他说的方法省略了一些东西,我把实现的细节补充一下

首先导入环境变量

export JAVA_PATH=/usr/lib/jvm/java-1.8.0-openjdk-amd64 (注意:此处要换成你自己服务器的jdk目录)

然后就是进入目录

cd $JAVA_PATH/jre/lib/security/

然后修改文件

sudo vi java.security

securerandom.source=file:/dev/urandom

替换成

securerandom.source=file:/dev/./urandom
重启服务器,就OK了,希望对你的服务也生效。
2018-01-31 18:01:31 zhangxing52077 阅读数 1408

1.场景还原

  今天在部署linux服务器java环境的时候,笔者发现tomcat启动非常慢,堪称龟速!起初笔者以为是哪里配置出错了,于是反复检查配置,无果而终;于是再仔细看了看日志,tomcat启动没有报出什么错,只是有种卡住的意味,笔者称之为“tomcat假死”。

2.解决方案

1.先安装jdk,在/etc/profile中配置其环境


2.检测jdk是否安装成功


3.然后在JVM相应的地方配置如下

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

securerandom.source=file:/dev/random

替换成

securerandom.source=file:/dev/urandom


ok,重启下tomcat试试启动的速度;响应速度相比之前快的多,立竿见影!

好了,我是张星,欢迎加入博主技术交流群,群号:313145288



2019-04-25 11:03:46 qq_37358860 阅读数 333

tomcat在linux服务器中启动特别慢的解决办法

转载 自由早晚乱余生

1. tomcat 启动慢

在线上环境中,我们经常会遇到类似的问题,就是tomcat 启动比较慢,查看内存和cpu,io都是正常的,但是启动很慢,有的时候长达几分钟,这到底是什么原因导致的。

1.1 tomcat 获取随机值阻塞

​ tomcat的启动需要产生session id,这个产生需要通过java.security.SecureRandom生成随机数来实现,随机数算法使用的是”SHA1PRNG”,但这个算法依赖于操作系统的提供的随机数据,在linux系统中,这个值又依赖于/dev/random 和/dev/urandom

/dev/random :阻塞型,读取它就会产生随机数据,但该数据取决于熵池噪声,当熵池空了,对/dev/random 的读操作也将会被阻塞。
/dev/urandom: 非阻塞的随机数产生器,它会重复使用熵池中的数据以产生伪随机数据。这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。

我们通过查看java.security 文件,(我的java版本是1.8.0_131) 发现依赖的是/dev/random

1552010227451

tomcat 启动产生session id 最终依赖的是/dev/random ,/dev/random 又依赖于熵池,

对于熵池,百度百科这样写到

     Linux内核采用熵来描述数据的随机性。熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大。在信息学中,熵被用来表征一个符号或系统的不确定性,熵越大,表明系统所含有用信息量越少,不确定度越大。计算机本身是可预测的系统,因此,用计算机算法不可能产生真正的随机数。但是机器的环境中充满了各种各样的噪声,如硬件设备发生中断的时间,用户点击鼠标的时间间隔等是完全随机的,事先无法预测。Linux内核实现的随机数产生器正是利用系统中的这些随机噪声来产生高质量随机数序列。内核维护了一个熵池用来收集来自设备驱动程序和其它来源的环境噪音。理论上,熵池中的数据是完全随机的,可以实现产生真随机数序列。为跟踪熵池中数据的随机性,内核在将数据加入池的时候将估算数据的随机性,这个过程称作熵估算。熵估算值描述池中包含的随机数位数,其值越大表示池中数据的随机性越好。

那么如何查看熵池 的大小,文件 /proc/sys/kernel/random/entropy_avail 保存着 熵池的大小。/proc/sys/kernel/random/poolsize 保存着熵池的最大容量,单位都是bit。

[root@haha cwd]# cat  /proc/sys/kernel/random/entropy_avail
146

总结 tomcat 启动慢的原因是随机数产生遭到阻塞,遭到阻塞的原因是 熵池大小 。

解决方法:

  1. 更换产生随机数的源,(也是tomcat的官方文档的启动比较慢的解决办法)
  2. 增大熵池 的值

1 . 更换产生随机数的源

官方文档链接

​ 因为/dev/urandom 是非阻塞的随机数产生器,所以我们可以从这边获取,但是生产的随机数的随机性比较低。我们可以在 我们的tomcat启动脚本(catalina.sh)里面添加

JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"

或者是更改java的java.security 文件,将securerandom.source=file:/dev/random

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

​ 注意一下,为什么我们这里使用的路径是"/dev/./urandom",而不是 "/dev/urandom",是因为在java 8之前的版本设置了/dev/urandom ,但是实际还是使用/dev/random,设置为"/dev/./urandom"才能正常使用 "/dev/urandom" , 这个bug在java8版本已经修复了,如果你是java7版本的话,需要按照上面设置,java8的话可以不用加 "./"。官方bug链接

2 .增大熵池 的值

要增大熵池 的值首先得你的cpu支持DRNG 特性, 如何查看我们的服务器的是否支持DRNG特性?

cat /proc/cpuinfo | grep rdrand

如果不支持的话,那么就只能通过上面的第一种方法来解决了

安装rngd服务(关于rngd服务的介绍)

yum -y install rng-tools
systemctl enable   rngd
systemctl start  rngd

然后我们进行查看我们的熵池 的值,会发现变大了

 cat  /proc/sys/kernel/random/entropy_avail

然后我们启动tomcat 会发现启动速度快很多。

1.2 tomcat 需要部署的web应用程序太多

​ 有的时候,我们tomcat启动比较慢是因为它需要部署的web应用程序太多,但是其中有些应用程序是我们不需要的,比如在webapps下的 doc 、example、ROOT 等等,我们可以将我们不需要的webapps删除,然后再进行发布,这些不需要的web,不仅会占用我们的资源,还有可能是入侵者的入侵对象。如果我们想并行启动多个web应用程序,我们可以Host 的属性 startStopThreads 值设置大于1 ,但这也取决于我们的服务器是不是多核的。如果是多核的建议调大 startStopThreads 的值,但不超过内核数。

1.3 tomcat启动内存不足

​ 如果是项目比较大的话,我们使用默认的参数去启动的tomcat是很有可能内存不足的,我们需要设置JVM,将内存调整,JVM 的最大值和最小值建议是不要相差太大(最好一致.)

在启动脚本catalina.sh加上:

JAVA_OPTS='-server -Xms1024m -Xmx1024m'

具体的内存大小,根据业务调整。

以上就是解决tomcat 启动慢的问题和解决方案,可根据自己的项目情况进行使用。后面也会有一篇tomcat 调优的文章,请大家点波关注哦。

2018-03-07 01:10:52 wo_shi_LTB 阅读数 471
  • 重启tomcat

    通过先关闭,然后启动的方式。。。。来重启tomcat ~~
    /usr/local/tomcat7/bin/shutdown.sh
    /usr/local/tomcat7/bin/startup.sh

    启动的时候,可以运行tail命令来查看启动过程:
     tail -300f /usr/local/tomcat7/logs/catalina.out
  • 启动缓慢

    tomcat7在centos7里面启动有时候会很慢,要好几分钟。 原因是什么什么熵什么什么随机的,反正运行下面命令之后再启动就好了。
    如果没有tomcat7启动过慢的问题,可以忽略此步骤
    yum -y install rng-tools 
    systemctl start rngd




2017-10-20 20:35:04 ruanxianqing 阅读数 5337


有两种解决办法:

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

Linux Tomcat启动慢

阅读数 80

没有更多推荐了,返回首页