【问题标题】:Slow tomcat 7 deployment without any configuration没有任何配置的tomcat 7部署缓慢
【发布时间】:2015-02-27 22:49:46
【问题描述】:

Tomcat每次部署大约需要20分钟,我发现它卡在部署阶段,见下面的日志,

第一次启动大约需要2-7分钟,然后每次重新启动都会变得更糟。

环境:

Tomcat 7.0.57 (apache-tomcat-7.0.57.tar.gz)

VPS:Ubuntu 12.04.5x32 LTS(512M 内存)

我做了什么:

  1. 无需任何更改即可创建一个新的“干净”VPS。

  2. 通过以下脚本安装 JDK 7:

    sudo apt-get install python-software-properties

    sudo add-apt-repository ppa:webupd8team/java

    sudo apt-get 更新

    sudo apt-get install oracle-jdk7-installer

  3. 将 apache-tomcat-7.0.57.tar.gz 上传到根主目录。

  4. 解压tar.gz

  5. 进入bin文件夹执行chmod 777 *和./startup.sh

谁能给个建议?谢谢。

【问题讨论】:

  • 尝试设置这个环境变量tomcat.util.scan.DefaultJarScanner.jarsToSkip=*,这可能是瓶颈,你可以在setenv.sh中设置
  • @JigarJoshi 抱歉,我没有找到 setenv.sh,它不是在 bin 文件夹中吗?
  • ok 让我们试试这个export JAVA_OPTS="-Domcat.util.scan.DefaultJarScanner.jarsToSkip=*" 在启动tomcat之前在你的终端上执行这个并试一试
  • @JigarJoshi 好像没啥变化,还是很慢
  • 卡住的时候可以用threaddump吗?您能否确保该属性已与 JConsole 或 jinfo 一起应用?

标签: java performance tomcat jvm


【解决方案1】:

after this interesting discussion 我们发现瓶颈是

"localhost-startStop-1" daemon prio=10 tid=0xa880e400 nid=0xbb9 runnable [0xa80f e000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:272)
at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(See dGenerator.java:551)
at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:1 39)
at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom .java:197)
at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java: 214)

它是通过指定使用随机种子来解决的

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

注意:这不太安全

https://bugs.openjdk.java.net/browse/JDK-6202721

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多