Apache Tomcat 是常见的用来 JavaServer Pages (JSP) 的服务器软件。然而我在运行它的时候,时不时会遇到一些奇怪的问题,在这里记录一下。
问题描述
测试环境的 JDK 版本为 1.8.0 以上,Apache Tomcat 版本为 8.5 以上,使用的是从官网下载的打包版。运行 bin/startup.sh
之后,会发现有较大概率出现 localhost:8080
加载不出来;或是执行 bin/shutdown.sh
关不掉 Tomcat 的情况。若执行 bin/catalina.sh run
查看输出的日志,会发现启动时卡在部署第一个网页那里,输出类似 INFO: Deploying web application directory /opt/apache-tomcat/webapps/host-manager
。
原因及解决方案
在排除了防火墙、端口占用等问题后,通过搜索终于在这里得到了一些启发。这很有可能是由于 SecureRandom
运行时,得到的随机结果熵不够,于是一直等待造成卡住。原问题的回答中提到了两种解决方案:
- 让 JRE 使用 non-blocking 的熵生成源,通过添加如下运行参数:
|
|
- 安装 haveged 包:
|
|
总结
- 搜索时也要尽可能遵循“提问的艺术”,通过查日志等方式把问题细化或缩小范围
- 并不是所有问题都是能用 root 权限执行来解决的~~,有时候可能会使问题变得更糟~~
困扰好久的问题终于解决了,让我叉会腰