为何我的 Docker 运行 tomcat 奇慢——9 分钟

2017-02-20 11:39:19 +08:00
 Antidictator

一个初始化的 tomcat7,jre7 ,但是 Deploy 自带的 examples 竟然要 9 分钟。

Feb 20, 2017 3:02:28 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/examples
Feb 20, 2017 3:11:45 AM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [555,272] milliseconds.
Feb 20, 2017 3:11:45 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/examples has finished in 557,089 ms
Feb 20, 2017 3:11:45 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/manager
Feb 20, 2017 3:11:45 AM org.apache.catalina.startup.HostConfig deployDirectory

网上说是 sessionid 的问题,但是我不知道怎么设置非阻塞熵池策略。。

http://i.imgur.com/MVVwkUN.png

http://i.imgur.com/xQsAfEW.png

但是9 分钟也太久了吧。请问怎么设置非阻塞熵池策略

用的是腾讯云的学生机,最低的 1G 配置。 有知道的大触帮忙看一下呗。

7176 次点击
所在节点    程序员
11 条回复
Antidictator
2017-02-20 11:41:09 +08:00
[补一张完整的 log]( )
zpf124
2017-02-20 11:48:17 +08:00
把那行生成安全的随机数的用时太长的日志 搜索一下 找到一个可能的答案。
http://stackoverflow.com/questions/26431922/tomcat7-starts-too-late-on-ubuntu-14-04-x64-digitalocean/26432537#26432537
Antidictator
2017-02-20 13:06:45 +08:00
@zpf124 恩恩,貌似有两种解决方法:
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/random

替换成

securerandom.source=file:/dev/urandom

from https://my.oschina.net/wangnian/blog/687914

不过我 exec 进入 container 修改了 catalina.sh ,但是貌似效果不明显。
第二种的话不知道怎么进入 JVM 环境
amd00
2017-02-20 14:52:11 +08:00
@Antidictator 既然用的 docker 那么在 build 的时候直接 dockerfile 里边 sed 修改就好了啊。或者 exec 也可以的吧
Antidictator
2017-02-20 18:03:53 +08:00
@amd00 试过了,会报错。有空我再研究下直接写在 dockerfile ,最后是用 exec 去里面改的
raysonx
2017-02-20 18:08:22 +08:00
说一个可能相关的,曾经在虚拟机里运行一些软件时遇到过随机数熵值不够的问题,可以尝试安装 haveged 解决
Antidictator
2017-02-20 18:14:37 +08:00
@raysonx thx ,最后是改 Java path 搞定的
Antidictator
2017-02-20 18:15:58 +08:00
@raysonx 改了 securerandom.source
salmon5
2017-02-20 20:19:58 +08:00
自己做的 KVM 和阿里云的基于 KVM 的虚机里会碰到该问题。阿里云基于 XEN 的没有碰到该问题。
phx13ye
2017-02-20 21:16:33 +08:00
Antidictator
2017-02-21 08:12:49 +08:00
@salmon5 是吗,我用的是腾讯云的学生机呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/341715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX