精华内容
下载资源
问答
  • tomcat启动卡住

    2018-11-20 17:04:00
    tomcat启动卡住 进入jdk/jre/lib/security/java.security文件 找到securerandom.source将这一行隐藏 并在下面一行加入securerandom.source=file:/dev/./urandom 保存重启tomcat即可 转载于:...

    tomcat启动时卡住

    进入jdk/jre/lib/security/java.security文件

    找到securerandom.source将这一行隐藏

    并在下面一行加入securerandom.source=file:/dev/./urandom

    保存重启tomcat即可

    转载于:https://www.cnblogs.com/javafucker/p/9990031.html

    展开全文
  • 现象如下: 1、项目启动日志正常,Spring或者...4、注意到一个细节,Tomcat正常启动和奇怪异常之间,日志最后有一点差别:正常启动后,tomcat最后会打印如下 Aug 10, 2020 1:47:03 PM org.apache.coyote.Abstr...

     

    现象如下:

    1、项目启动日志正常,Spring或者MVC框架也正常加载完成。但是对外无法访问,何解?

    2、Tomcat无法正常关闭,因为shutdown port不可用。只能kill。

    3、Jstack内容太多,很难查出问题,但基本上可以确认项目所有bean、线程都是正常的。

    4、注意到一个细节,Tomcat正常启动和奇怪异常之间,日志最后有一点差别:正常启动后,tomcat最后会打印如下

    Aug 10, 2020 1:47:03 PM org.apache.coyote.AbstractProtocol start

    INFO: Starting ProtocolHandler ["http-nio-9500"]

        异常启动时,没有这两行信息(但是9500端口是有的)。除此之外,其他日志完全相同。

     

    排查思路:

    1、框架、组件问题?会不会是框架、或组件(比如Log)某处线程阻塞了?

        由于项目代码,包括框架和组件,都是我完全可控的(源码级别的熟悉),所以简单分析了一遍之后,我可以肯定框架和组件没有问题。

    2、Tomcat自身问题(某个版本的Tomcat在某个Linux系统上触发了一个bug?)

        升级Tomcat到最新版本,问题依旧。

    3、既然是环境问题,那很可能与项目无关,将项目换成一个简单servlet项目,问题也应该一模一样。

        去掉项目复杂的内容,仅保留简单的servlet,然后排查Jstack,此时jstack内容很少,很容易定位问题。

        于是我发现下面一段线程信息,根据我的经验,似曾相识:

    "localhost-startStop-1" #13 daemon prio=5 os_prio=0 tid=0x00007f2fbc1db000 nid=0x6243 runnable [0x00007f2ff0f11000]

       java.lang.Thread.State: RUNNABLE

        at java.io.FileInputStream.readBytes(Native Method)

        at java.io.FileInputStream.read(FileInputStream.java:255)

        at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:539)

        at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:144)

        at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom.java:203)

        at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:221)

        - locked <0x00000000e362dc00> (a sun.security.provider.SecureRandom)

        at java.security.SecureRandom.nextBytes(SecureRandom.java:468)

        at java.security.SecureRandom.next(SecureRandom.java:491)

        at java.util.Random.nextInt(Random.java:329)

        at org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom(SessionIdGeneratorBase.java:269)

        at org.apache.catalina.util.SessionIdGeneratorBase.getRandomBytes(SessionIdGeneratorBase.java:203)

        at org.apache.catalina.util.StandardSessionIdGenerator.generateSessionId(StandardSessionIdGenerator.java:34)

        at org.apache.catalina.util.SessionIdGeneratorBase.generateSessionId(SessionIdGeneratorBase.java:195)

        at org.apache.catalina.util.SessionIdGeneratorBase.startInternal(SessionIdGeneratorBase.java:289)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

        - locked <0x00000000e362ccf0> (a org.apache.catalina.util.StandardSessionIdGenerator)

        at org.apache.catalina.session.ManagerBase.startInternal(ManagerBase.java:626)

        at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:350)

        - locked <0x00000000edb4ee70> (a org.apache.catalina.session.StandardManager)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

        - locked <0x00000000edb4ee70> (a org.apache.catalina.session.StandardManager)

        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5184)

        - locked <0x00000000ed08dd60> (a org.apache.catalina.core.StandardContext)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

        - locked <0x00000000ed08dd60> (a org.apache.catalina.core.StandardContext)

        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412)

        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402)

        at java.util.concurrent.FutureTask.run(FutureTask.java:266)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

        at java.lang.Thread.run(Thread.java:748)

        下面这两句是我熟悉的:

    java.io.FileInputStream.readBytes(Native Method)

    java.security.SecureRandom.nextBytes

        Tomcat确实有个bug,在执行SecureRandom可能非常缓慢(甚至卡住)。

        触发这个Bug的前提是,项目中使用了随机数Random类。

        于是百度一下,具体原因及解决方案就出来了:

     

    原因:

    1、SecureRandom 这个 jre 的工具类的问题。

        Linux 中的随机数可以从两个特殊的文件中产生,一个是 /dev/urandom,另外一个是 /dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了。

        这就是为什么会有 /dev/urandom 和 /dev/random 这两种不同的文件,后者在不能产生新的随机数时会阻塞程序,而前者不会(ublock),当然产生的随机数效果就不太好了,这对加密解密这样的应用来说就不是一种很好的选择。/dev/random 会阻塞当前的程序,直到根据熵池产生新的随机字节之后才返回,所以使用 /dev/random 比使用 /dev/urandom 产生大量随机数的速度要慢。

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

    2、Tomcat 7/8 都使用 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 类产生安全随机类 SecureRandom 的实例作为会话 ID。

     

    解决方案:

    1、启动JVM参数中添加:-Djava.security.egd=file:/dev/./urandom 即可。

     

    2. 修改JVM配置

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

    securerandom.source=file:/dev/random

    替换成:

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

     

     

     

    展开全文
  • tomcat 启动卡住不动

    2021-03-01 15:35:57
    <p>tomcat启动卡住 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-80"] [main] org.apache.catalina.startup.Catalina.start Server startup in 2455 ms ...
  • Linux Tomcat 启动卡住

    千次阅读 2017-09-27 21:17:00
    第一次遇到Tomcat在Linux服务器启动卡住的情况,情况很简单,tomcat启动以后卡在INFO: Deploying web application directory ......这句话,具体会卡多久就没测试了。google、baidu都没找到解决方法。 幸亏UCloud的...

    第一次遇到Tomcat在Linux服务器启动卡住的情况,情况很简单,tomcat启动以后卡在INFO: Deploying web application directory ......这句话,具体会卡多久就没测试了。google、baidu都没找到解决方法。

    幸亏UCloud的技术支持人员给出了解决方案。

    找到jdk1.x.x_xx/jre/lib/security/java.security文件,在文件中找到securerandom.source这个设置项,将其改为:

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

    这时候根据修改内容就可以查到因为此原因不仅可以造成tomcat卡住,也会造成weblogic启动缓慢,


    linux或者部分unix系统提供随机数设备是/dev/random 和/dev/urandom ,两个有区别,urandom安全性没有random高,但random需要时间间隔生成随机数。jdk默认调用random。


    再后来,终于在weblogic的官方文档中 Monitoring and Troubleshooting 找到了 Avoiding JVM Delays Caused By Random Number Generation 这样一个标题。摘录如下:

    The library used for random number generation in Sun's JVM relies on /dev/random by default for UNIX platforms. This can potentially block the Oracle WebLogic Communication Services process because on some operating systems /dev/random waits for a certain amount of "noise" to be generated on the host machine before returning a result. Although /dev/random is more secure, Oracle recommends using /dev/urandom if the default JVM configuration delays Oracle WebLogic Communication Services startup.

    To determine if your operating system exhibits this behavior, try displaying a portion of the file from a shell prompt:

    head -n 1 /dev/random
    Open the $JAVA_HOME/jre/lib/security/java.security file in a text editor.

    Change the line:

    securerandom.source=file:/dev/random
    to read:

    securerandom.source=file:/dev/urandom
    Save your change and exit the text editor.
    其中说到:可通过 head -n 1 /devrandom 查看是否你的系统会出现伪随机数提供等待。OK就这个,试了一下,果然,在服务器第一次启动后,这个可以快速提供一个值,但当再次调用时发生等待。


    解决办法:


    永久:oracle 说修改 $JAVA_HOME/jre/lib/security/java.security 文件,替换securerandom.source=file:/dev/random 为 securerandom.source=file:/dev/urandom。对所有使用JVM的应用生效。(这个永久的方法,这里面有个问题,就是设置时候实际应该设置为securerandom.source=file:/dev/./urandom,否则不生效)


    DOMAIN临时:修改startWeblogic.sh文件,JAVA_OPTIONS="${SAVE_JAVA_OPTIONS} -Djava.security.egd=file:/dev/./urandom"


    后继的SecureRandom 测试学习


    编写JAVA类如下,运行测试,第一次正常,第二次等待,重启服务器后第一次又正常。启动加入参数 -Djava.security.egd=file:/dev/./urandom 正常

    展开全文
  • tomcat启动卡住

    2018-07-04 17:05:38
    新部署的项目启动tomcat后一直停在org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.16,在了org.apache.catalina.startup.HostConfig.deployDirectory ...

    新部署的项目启动tomcat后一直停在org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.16,卡在了org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/host-manager]
    将近7分钟。

    [root@app-web-2-64-0002 bin]# tail -500f ../logs/catalina.2018-07-04.out
    ......
    04-Jul-2018 16:28:59.520 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 328 ms
    04-Jul-2018 16:28:59.534 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
    04-Jul-2018 16:28:59.534 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.16
    ......
    卡了近7分钟
    ......
    04-Jul-2018 16:35:00.238 WARNING [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [360,548] milliseconds.
    04-Jul-2018 16:35:00.273 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/host-manager]
    ....

    解决方法:
    修改jdk的java.security文件securerandom.source项

    [root@app-web-2-64-0002 bin]# grep "source=file" /usr/java/jdk1.8.0_161/jre/lib/security/java.security 
    #securerandom.source=file:/dev/random
    securerandom.source=file:/dev/./urandom
    [root@app-web-2-64-0002 bin]# 

    将securerandom.source=file:/dev/random修改为securerandom.source=file:/dev/./urandom

    linux或者部分unix系统提供随机数设备是/dev/random 和/dev/urandom ,两个有区别,urandom安全性没有random高,但random需要时间间隔生成随机数。jdk默认调用random。可通过 head -n 1 /devrandom 查看是否的系统会出现伪随机数提供等待,

    展开全文
  • 我在部署完项目后,debug启动Tomcat会在中间卡住不继续执行,测试发现在不部署项目的时候Tomcat是可以正常启动的。 控制台信息如下: 十月 25, 2017 10:40:44 上午 org.apache.catalina.startup....
  • 如图,tomcat在一半卡住 先说下我的尝试步骤: 1.在file->Project Structure把项目重新删除添加过,没效果 2.下了个tomcat8.5尝试,没效果 3.按网上说的注释tomcat bin目录下catlina.bat的JAVA_OPTS...
  • idea tomcat启动项目卡住 直接把项目复制到该tomcat则可以启动 项目名为cytj,直接把idea的war包复制到tomcat webapps启动项目正常发布 把该tomcat配置到idea 运行 发布好manager后就卡住了 查找原因是...
  • 关于tomcat启动项目时一直卡住无反应的场景之一: 最近碰到一次项目启动半天没反应,也不报错,项目在其它电脑上能正常启动运行。日志有时候会报数据库连接超时,有时候会报类似于接连池问题。 Causedby:...
  • 使用idea启动项目时出现如下状况 org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\Program Files\Tomcat9\webapps\manager] org.apache.catalina.startup.HostConf...
  • Tomcat乱码以及IDEA启动Tomcat卡住问题的解决 1 Tomcat乱码 运行Tomcat中bin目录下的命令窗口时,不事先设置会导致窗口的中文乱码问题。 首先找到Tomcat根目录下面的bin文件夹,然后打开用记事本打开catalina.bat...
  • 最近发现在服务器上启动tomcat,会存在卡住的情况,这种情况是每次必现,通过搜索发现是随机数生成问题.解决方案如下将$JAVA_HOME/jre/lib/security/Java.security内,将securerandom.source的内容改为file:/dev/./...
  • 解决tomcat启动时,卡住问题

    千次阅读 2017-05-04 12:20:00
    一般在Linux上部署项目我所知道的有很多方法:有最简单的手动...但是有的时候重启tomcat会被卡住,他会一直卡在 (通过./catalina.sh run方法可以查看输出到标准输出流的日志) INFO: Deploying web application dire...
  • 用idea启动Tomcat卡住

    2019-07-30 16:20:04
    Using CATALINA_BASE: "C:\Users\Administrator\.IntelliJIdea2019.1\system\tomcat\Tomcat_9_0_19_untitled1_8" Using CATALINA_HOME: "D:\Tomcat" Using CATALINA_TMPDIR: "D:\Tomcat\temp" Using JRE_HOME: "C...
  • ![图片说明](https://img-ask.csdn.net/upload/202004/29/1588141727_878392.png) 如图所示,就一直在这,也没有任何报错信息,有大神知道是怎么回事吗
  • 2019独角兽企业重金招聘Python工程师标准>>...添加启动参数 wrapper.java.additional.16=-Djava.security.egd=file:/dev/./urandom 转载于:https://my.oschina.net/u/1045177/blog/865194
  • 本文主要是介绍在IDE(Eclipse)配置Properties Editor插件以方便开发人员能够以方便人为阅读的方式打开文件阅读并以Unicode格式保存配置文件。 Properties文件 .properties是一种主要在Java相关技术用来存储...
  • 原因可能是debugger打的断点, 即使禁用也会造成程序等待一直跳不过去, 把所有断电删除就可以了
  • tomcat启动超级慢,或者卡住不动

    千次阅读 2018-07-02 11:14:46
    先说解决办法: 1)在Tomcat环境解决 可以通过配置JRE使用非阻塞的Entropy Source。...加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。 2)在JVM环境解决 打开$JAVA_PATH/jre...
  • idea无法启动tomcat,一直是卡住的状态

    万次阅读 多人点赞 2017-10-27 19:57:43
    今天在idea运行tomcat是一直卡住在27-Oct-2017 17:25:49.794 信息 [main] org.apache.catalina.startup.Catalina.load Initialization processed in 5946 ms 27-Oct-2017 17:25:49.817 信息 [main] org.apache....
  • 卡住后,过几分钟tomcat会佯装已经启动,但是访问页面出现404. OMG,这么诡异的问题。感谢某大神的帮助~ 原因:依赖使用jar包是用maven 管理的,spring的配置文件用到的spring版本和pom里的spring版本不一致。
  • 主要原因是生成随机数的时候卡住了,导致tomcat启动不了。 经过检查,发现原因是因为最小化安装系统的时候,是没有rng-tools这个包的。(阿里云ECS服务器一般都会有这个问题存在) 1.vim vim /usr/java/jdk1.8.0_111/...
  • 启动tomcat并查看日志发现启动到webapps/ROOT时卡住 Apr 09, 2019 4:27:12 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] Apr 09, 2019 4:27:12 PM org.apache...
  • Tomcat在Linux服务器启动卡住的情况,情况很简单,tomcat启动以后卡在 INFO: Deploying web application directory /usr/software/tomcat/apache-tomcat-7.0.61/webapps/docs 解决方法 将jdk下的 /usr/local/jdk8/...
  • 原文地址: 启动tomcat时,一直在Deploying web ...Tomcat启动在“INFO: Deploying web application directory ......”的解决方法_Stone的专栏-CSDN博客 https://blog.csdn.net/njchenyi/article/details...
  • 在使用tomcat运行项目时,发现应用迟迟无法启动成功,一直在某日志输出处卡住,窗口和日志文件也没有错误日志输出 解决: 在tomcat运行窗口,标题处(左上方),右键,选择属性 去除快速编辑模式选项,点击确定即可 ...
  • 解决Linux环境下Tomcat启动卡住问题

    千次阅读 2018-05-08 13:23:06
    解决Linux环境下Tomcat启动卡住问题 svn Linux 运维以及脚本干货: 欢迎分享,欢迎folk, 欢迎留言 https://unnunique.github.io/AADocs/skill-docs/linux/ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,770
精华内容 1,508
关键字:

tomcat启动中卡住了