web-dev-qa-db-ja.com

Tomcat 8は、webappのデプロイ中に起動時にハングします。エントロピー生成に関連している可能性があります

私はTomcat Webアプリケーションを起動しようとしていますが、サーバー(Vanilla Tomcat8ダウンロード)をテストしているだけで、起動時にハングアップしているようです。私の推測では、SecureRandomクラスを処理する何かに引っかかっています。 Tomcatはエントロピーを生成しているときに時々停止する可能性があると聞きました。

これが私のバージョンです:

Java

Java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

Tomcat

8.0.15

Ubuntu

VERSION="14.04.1 LTS, Trusty Tahr"

試してみると、Host-manager webappのデプロイがハングしているようです。これは約5分の待機後の私のログです

willkara@SkyHold:/opt$ more /opt/Tomcat8/logs/catalina.out 
09-Jan-2015 14:42:50.085 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.15
09-Jan-2015 14:42:50.087 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Server built:          Nov 2 2014 19:25:20 UTC
09-Jan-2015 14:42:50.088 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.15.0
09-Jan-2015 14:42:50.088 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
09-Jan-2015 14:42:50.088 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log OS Version:            3.13.0-37-generic
09-Jan-2015 14:42:50.089 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Architecture:          AMD64
09-Jan-2015 14:42:50.089 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Java_HOME:             /usr/lib/jvm/Java-7-openjdk-AMD64/jre
09-Jan-2015 14:42:50.089 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.7.0_65-b32
09-Jan-2015 14:42:50.090 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
09-Jan-2015 14:42:50.090 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /home/willkara/Tomcat8
09-Jan-2015 14:42:50.090 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /home/willkara/Tomcat8
09-Jan-2015 14:42:50.091 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/Tomcat8/conf/logging.properties
09-Jan-2015 14:42:50.092 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.Apache.juli.ClassLoaderLogManager
09-Jan-2015 14:42:50.092 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=/opt/Tomcat8/endorsed
09-Jan-2015 14:42:50.093 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/Tomcat8
09-Jan-2015 14:42:50.093 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/Tomcat8
09-Jan-2015 14:42:50.093 INFO [main] org.Apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/Tomcat8/temp
09-Jan-2015 14:42:50.094 INFO [main] org.Apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the Java.libr
ary.path: /usr/Java/packages/lib/AMD64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
09-Jan-2015 14:42:50.257 INFO [main] org.Apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
09-Jan-2015 14:42:50.293 INFO [main] org.Apache.Tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
09-Jan-2015 14:42:50.297 INFO [main] org.Apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
09-Jan-2015 14:42:50.299 INFO [main] org.Apache.Tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
09-Jan-2015 14:42:50.300 INFO [main] org.Apache.catalina.startup.Catalina.load Initialization processed in 1026 ms
09-Jan-2015 14:42:50.334 INFO [main] org.Apache.catalina.core.StandardService.startInternal Starting service Catalina
09-Jan-2015 14:42:50.334 INFO [main] org.Apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.15
09-Jan-2015 14:42:50.347 INFO [localhost-startStop-1] org.Apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/willkara/Tomcat8/webapps/Host-manager

また、Java VMですべてが正常に実行されているかどうかを確認するために、いくつかの異なるjstackダンプを添付しました。

ダンプ1

ダンプ2

6
Sempus

SecureRandomクラスでのエントロピー生成に問題があったようです。

このフラグをJava_OPTSに追加しました:-Djava.security.egd = file:/ dev /./ urandom完全に正常に起動します。

これは問題を解決する完璧な方法ではないので、Java8にアップグレードすることで解決できるかどうかを確認します。

このリンク から情報を入手しました。

15
Sempus

この問題は、仮想マシンを使用するときに発生します。ファイルsetenv.shにDjava.security.egd = file:/ dev /./ urandomnsを設定します

3
Jordi Escofet