朱培(知浅_ZLH)

勿以浮沙筑高台,才学浅薄,低调做人-----sdksdk0

docker中安装的centos启动tomcat 非常慢解决方案

最近在用docker部署部署应用,遇到的两个问题就是:

1、docker run  启动容器的时候,总是会强行Exited ,这个问题就是在启动时加上-it就可以了,例如 

docker run -it -d -p 58080:8080 --name tomcat1 test/myweb:0.1 /root/run.sh 

2、docker中安装的centos启动tomcat 非常慢。

在全部操作完成之后,端口也映射好了,但是外部死活访问不了,


然后登录到容器中查看tomcat的日志,发现一直在部署中,卡着不动,要好几分钟甚至十几分钟才启动完成,简直不可思议。

后来发现根本原因就在于 SecureRandom 这个 jre 的工具类的问题。那为什么 SecureRandom generateSeed 这么慢,甚至挂在 Linux 操作系统呢?Tomcat 7/8 都使用 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 类产生安全随机类 SecureRandom 的实例作为会话 ID。

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

所以解决方案就是:直接改jdk的配置

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

securerandom.source=file:/dev/random

替换成:

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

然后再重新运行,速度就飞快了。




阅读更多
版权声明:文章版权归作者所有,未经同意严禁转载! https://blog.csdn.net/sdksdk0/article/details/80318459
个人分类: 大数据云计算
想对作者说点什么? 我来说一句

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

不良信息举报

docker中安装的centos启动tomcat 非常慢解决方案

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭