web-dev-qa-db-ja.com

Tomcat14がUbuntu 14.04 x64で遅すぎる[Digitalocean]

私はdigitaloceanを使用していて、ubuntuにTomcatをインストールして起動しようとしていますが、残念ながらできません。 (新しい液滴を作成し、10回試行しました)

1GB Ram 30GB SSD Disk Amsterdam 2 Ubuntu 14.04 x64

Tomcatを起動すると、「Tomcatが起動しました」と表示されます。しかし、ブラウザからページにアクセスできません。 ./shutdown.shはエラーを返します。

何が問題になりますか?

何かに気づきました。この質問を書いている間、Tomcatページが表示されます。ページを表示するのに28分かかりました

catalina.outのコメント:情報:[SHA1PRNG]を使用したセッションID生成用のSecureRandomインスタンスの作成には[1,718,769]ミリ秒かかりました。

ここに私のインストール手順があります(これらの手順は異なるvpsで動作しますが、デジタルオーシャンの液滴では動作しません):

Oracle jdkをインストールする

 Sudo apt-get install python-software-properties
 Sudo add-apt-repository ppa:webupd8team/Java
 Sudo apt-get update
 Sudo apt-get install Oracle-Java7-installer
 Sudo apt-get install Oracle-Java7-set-default
      Java -version
      Java version "1.7.0_72"
      Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
      Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

Set Java path

      Sudo nano /etc/environment
      Java_HOME="/usr/lib/jvm/Java-7-Oracle"
      source /etc/environment
      wget http://ftp.itu.edu.tr/Mirror/Apache/Tomcat/tomcat-7/v7.0.56/bin/Apache-Tomcat-7.0.56.tar.gz
      tar xvzf Apache-Tomcat-7.0.56.tar.gz
      mv Apache-Tomcat-7.0.56/ Apache-Tomcat-7.0.56-server-1/

Tomcatを起動します

        ./startup.sh
            Using CATALINA_BASE:   /usr/local/Apache-Tomcat-7.0.56-server-1
            Using CATALINA_HOME:   /usr/local/Apache-Tomcat-7.0.56-server-1
            Using CATALINA_TMPDIR: /usr/local/Apache-Tomcat-7.0.56-server-1/temp
            Using JRE_HOME:        /usr/lib/jvm/Java-7-Oracle/jre
            Using CLASSPATH:       /usr/local/Apache-Tomcat-7.0.56-server-1/bin/bootstrap.jar:/usr/local/Apache-Tomcat-7.0.56-server-1/bin/Tomcat-juli.jar
            Tomcat started.

チェックアウトポート8080

        netstat -ln 
            tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
            tcp6       0      0 :::8009                 :::*                    LISTEN
            tcp6       0      0 :::8080                 :::*                    LISTEN
            tcp6       0      0 :::22                   :::*                    LISTEN

チェックアウトプロセス

            ps -ef | grep Tomcat
            root      2825     1  1 14:23 pts/0    00:00:03 /usr/lib/jvm/Java-7-Oracle/jre/bin/Java -Djava.util.logging.config.file=/usr/local/Apache-Tomcat-7.0.56-server-1/conf/logging.properties -Djava.util.logging.manager=org.Apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/Apache-Tomcat-7.0.56-server-1/endorsed -classpath /usr/local/Apache-Tomcat-7.0.56-server-1/bin/bootstrap.jar:/usr/local/Apache-Tomcat-7.0.56-server-1/bin/Tomcat-juli.jar -Dcatalina.base=/usr/local/Apache-Tomcat-7.0.56-server-1 -Dcatalina.home=/usr/local/Apache-Tomcat-7.0.56-server-1 -Djava.io.tmpdir=/usr/local/Apache-Tomcat-7.0.56-server-1/temp org.Apache.catalina.startup.Bootstrap start

ポート8080でWebサイトを開くhttp://5.101.107.56:8080/ページが待機しています... [コンテンツは28分以上後に表示されます]

コンテンツがまだ表示されていない場合(Tomcatが正常に起動する前に)、Tomcatをシャットダウンしてください。

      ./shutdown.sh 
            SEVERE: Could not contact localhost:8005. Tomcat may not be running.
            Oct 17, 2014 2:40:29 PM org.Apache.catalina.startup.Catalina stopServer
            SEVERE: Catalina.stop:
                Java.net.ConnectException: Connection refused
                at Java.net.PlainSocketImpl.socketConnect(Native Method)
                at Java.net.AbstractPlainSoc

チェックアウトログ

      catalina.out
            Oct 17, 2014 2:31:47 PM org.Apache.coyote.AbstractProtocol init
            INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
            Oct 17, 2014 2:31:47 PM org.Apache.catalina.startup.Catalina load
            INFO: Initialization processed in 1492 ms
            Oct 17, 2014 2:31:47 PM org.Apache.catalina.core.StandardService startInternal
            INFO: Starting service Catalina
            Oct 17, 2014 2:31:47 PM org.Apache.catalina.core.StandardEngine startInternal
            INFO: Starting Servlet Engine: Apache Tomcat/7.0.56
            Oct 17, 2014 2:31:47 PM org.Apache.catalina.startup.HostConfig deployDirectory
            INFO: Deploying web application directory /usr/local/Apache-Tomcat-7.0.56-server-1/webapps/Host-manager

また、nginxをインストールし、http://5.XXX.XXX.XX/ nginxようこそページがすぐに開きます

ブラウザでページが表示されたら、catalina.outを確認しました。

    Oct 17, 2014 2:31:47 PM org.Apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory /usr/local/Apache-Tomcat-7.0.56-server-1/webapps/Host-manager
    Oct 17, 2014 3:00:27 PM org.Apache.catalina.util.SessionIdGenerator createSecureRandom
    INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took **[1,718,769] milliseconds.**

メモリ:

               total       used       free     shared    buffers     cached
  Mem:       1017912     849512     168400        332      18780     688468
47
yuceel

securerandom.source=file:/dev/urandomsecurerandom.source=file:/dev/./urandom$Java_PATH/jre/lib/security/Java.securityに置き換えると、問題が解決しました。

file:/dev/urandomが指定されている場合でも、JREは引き続きSHA1PRNGに対して/dev/randomを使用します(バグ JDK-470509 を参照)。

SHA1PRNGには、設定に応じてさまざまな処理を行うSeedGeneratorがあります。

  1. Java.security.egdまたはsecurerandom.sourceが「file:/ dev/random」または「file:/ dev/urandom」を指す場合、NativeSeedGeneratorを使用します。これはSeedGenerator.URLSeedGenerator(/ dev/randomを呼び出すsuper()を呼び出します)。 (SeedGenerator内のネストされたクラス。)このバグで変更された唯一のことは、urandomもこのコードパスの使用をトリガーすることでした。

  2. これらのプロパティが存在する別のURLを指している場合、SeedGenerator.URLSeedGenerator(url)を初期化します。これが、「file:/// dev/urandom」、「file:/./ dev/random」などが機能する理由です。

/ dev/randomのウィキペディア

この実装では、ジェネレーターはエントロピープール内のノイズのビット数の推定値を保持します。このエントロピープールから乱数が作成されます。読み取られると、/ dev/randomデバイスは、エントロピープール内のノイズの推定ビット数内のランダムバイトのみを返します。 /dev/random は、ワンタイムパッドやキー生成など、非常に高品質のランダム性を必要とする用途に適している必要があります。

エントロピープールが空の場合、/ dev/randomから読み取りwill block追加の環境ノイズが収集されるまで。可能な限り大きなエントロピーで出力を生成する数値ジェネレーター。これは、価値の高い、または長期的な保護のための暗号化キーの生成に使用することをお勧めします。

環境騒音?

乱数ジェネレーターは、環境ノイズデバイスドライバーおよびその他のソースからエントロピープールに収集します。ジェネレーターは、エントロピープール内のノイズのビット数の推定値も保持します。このエントロピープールから乱数が作成されます。

つまり、実際には、Tomcatを未知の時間ブロックすることが可能です。

76
yuceel

これも機能します:

実際、/ etc/default/Tomcat7で以下を設定することにより、私は大丈夫でした:

Java_OPTS = "-Djava.security.egd = file:/ dev /./ urandom -Djava.awt.headless = true -Xmx1024m -XX:MaxPermSize = 512m -XX:+ UseConcMarkSweepGC"

からのコメント:

https://www.digitalocean.com/community/tutorials/how-to-install-Apache-Tomcat-7-on-ubuntu-14-04-via-apt-get

17
Zouzias

エントロピーのソースとして/dev/urandomを使用することは、Tomcatの起動時間を短縮する回避策ですが、意図しない副作用が生じる可能性があるため、お勧めできません。

Tomcatサーバーで実行される他のコンポーネント(Webアプリケーションなど)は、安全に初期化されたSecureRandomインスタンスに依存する場合があり、乱数のエントロピーが十分でない場合にセキュリティ上の問題が発生する可能性があります。

実際、これは/dev/urandomの使用が機能しないが、/dev/./urandomが機能する理由の1つです。 SHA1PRNGは、良好なシードに大きく依存しています。シードが良くない場合、乱数は予測可能です。したがって、開発者は、JVMが/dev/randomを使用するように構成されている場合でも、この目的で/dev/urandomがエントロピーのソースとして使用されるようにしました。これについて2つのバグレポートがあります( bug 1bug 2 )。

したがって、エントロピーのソースを/dev/urandomに変更する代わりに、/dev/randomに十分なエントロピーがあることを確認する必要があります。システムにハードウェアRNGがある場合、rng-toolsをインストールするとうまくいきます。そうでない場合、havegedをインストールすると、存在する特別なハードウェアRNGに依存しないエントロピーの非常に優れたソースが提供されます。仮想マシンでは、rng-toolsは仮想ハードウェアRNGを介してホストからのエントロピーを使用できます。これに代わるものとして、 [〜#〜] egd [〜#〜] を使用できますが、現時点ではこのソフトウェアはUbuntuリポジトリに含まれていないため、使用するのは面倒です。

13