救救孩子,碰到蜜汁问题了.tomcat 启动需要 5 分钟.

2021-12-22 14:39:25 +08:00
 helee9199

前天机器到手,花了两天时间折腾环境,今天开始干活儿,但是 tomcat 启动会卡住 5 分钟 很准确的 4-5 分钟的误差 每次都是. 说一下环境 m1 macbook 32g zulu jdk8 idea 2021.3 tomcat 6.0.53 和 tomcat8.5.73 其实我们项目比较老,还是 java6 的 其他不多说了,目前碰到的问题就是启动 tomcat 跑一段码 然后会在 deploying web application directory host-manager 处 卡住 4-5 分钟项目才起来,控制台无错误. 删除 tomcat 下 webapp 下文件后 则不提示这句 但依然是 4-5 分钟才启动起来. 找了很多方法, 查看 idea.log 发现有这么一段报错

2021-12-22 12:15:00,741 [3862560]   WARN - n.process.BaseOSProcessHandler - Process hasn't generated any output for a long time.
If it's a long-running mostly idle daemon process, consider overriding OSProcessHandler#readerOptions with 'BaseOutputReader.Options.forMostlySilentProcess()' to reduce CPU usage.
Command line: /Users/leehe/Apache/apache-tomcat-6.0.53/bin/catalina.sh run 
java.lang.Throwable: Process creation:
	at com.intellij.execution.process.BaseOSProcessHandler.<init>(BaseOSProcessHandler.java:33)
	at com.intellij.execution.process.OSProcessHandler.<init>(OSProcessHandler.java:86)
	at com.intellij.execution.process.OSProcessHandler.<init>(OSProcessHandler.java:79)

然后我到处搜,最后在 win 环境下试,发现也有这个报错 在启动完毕以后就有这个 所以应该不是这个的问题. 然后 tomcat6 和 tomcat8 我都试了 是一样的情况 都是 4-5 分钟才启动完毕.

[2021-12-22 02:21:49,275] 工件 INQGEN_eNursing_Web:war exploded: 工件已成功部署
[2021-12-22 02:21:49,276] 工件 INQGEN_eNursing_Web:war exploded: 部署已花费 284,743 毫秒

还找到一个方法 说是加入这行

-Djava.security.egd=file:/dev/urandom
但是依然没效果.

哎 好捉急 救救孩子吧 有无大佬知道是什么情况呢 应该如何解决.

2442 次点击
所在节点    MacBook Pro
7 条回复
ChovyChu
2021-12-22 15:47:19 +08:00
jstack 看一下卡在哪吧
GuryYu
2021-12-22 16:32:54 +08:00
一般是没有主机名引起的,可以尝试以下命令设置主机名(自己修改下名称)

sudo scutil --set HostName xxxxdeMacBookPro
sudo scutil --set LocalHostName xxxxdeMacBookPro
helee9199
2021-12-22 16:45:40 +08:00
@GuryYu
还有这种情况?
不过我登陆了 appleid
终端界面也是有名字的
还是试了一把。刚重启完。看起来并没有效果
bigYangMao
2021-12-22 20:05:11 +08:00
试过不用 idea 独立启动 tomcat 么?
jorneyr
2021-12-22 21:54:21 +08:00
# Tomcat 启动慢

Tomcat 在第一次启动时很快,但是在第二次及以后启动时都会卡在 **...Deploying web application directory...** 这里很久,有 2 种解决办法:

1. 全局: 修改 **$JAVA\_HOME/jre/lib/security/java.security**:
```
securerandom.source=file:/dev/urandom
```

2. 局部: Tomcat 的启动文件中 JAVA\_OPTS 加上 **-Djava.security.egd=file:/dev/urandom**

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

原因:

Linux 或者部分 Unix 系统提供随机数设备是 /dev/random 和 /dev/urandom ,urandom 安全性没有 random 高,但 random 需要时间间隔生成随机数,JDK 默认调用 random ,所以在启动时就卡住了。
helee9199
2021-12-23 08:59:37 +08:00
@jorneyr 没有效果 我搜到了这个方法.
helee9199
2021-12-24 16:13:49 +08:00
捞一下。有大佬知道么

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

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

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

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

© 2021 V2EX