前天机器到手,花了两天时间折腾环境,今天开始干活儿,但是 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
但是依然没效果.
哎 好捉急 救救孩子吧 有无大佬知道是什么情况呢 应该如何解决.
1
ChovyChu 2021-12-22 15:47:19 +08:00
jstack 看一下卡在哪吧
|
2
GuryYu 2021-12-22 16:32:54 +08:00
一般是没有主机名引起的,可以尝试以下命令设置主机名(自己修改下名称)
sudo scutil --set HostName xxxxdeMacBookPro sudo scutil --set LocalHostName xxxxdeMacBookPro |
3
helee9199 OP |
4
bigYangMao 2021-12-22 20:05:11 +08:00 via iPhone
试过不用 idea 独立启动 tomcat 么?
|
5
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 ,所以在启动时就卡住了。 |
7
helee9199 OP 捞一下。有大佬知道么
|