今日、私はクラスメートが問題を解決するのを手伝いました - Tomcat の起動が非常に遅く、約 5 ~ 6 分でした。それが解決されると、起動にはわずか 3 秒しかかかりません。 問題を解決するにはどうすればいいでしょうか? Tomcat の bin ディレクトリで catalina.sh を見つけて開き、次の場所にコード行を追加します。
2019年2月12日追記:原理を知りたいという友人が多いので簡単に説明します。 Tomcat 7 および Tomcat 8 は、起動時に org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom を呼び出して、安全な乱数の文字列を生成します。 Linux (CentOS) 環境では、/dev/urandom と /dev/random の 2 つの特殊ファイルから乱数を生成できます。 乱数を生成する原理は、現在のシステムのエントロピー プールを使用して固定数のランダム ビットを計算し、これらのビットをバイト ストリームとして返すことです。エントロピー プールは、現在のシステムの環境ノイズです。エントロピーは、システム内のカオスの度合いを表します。システム ノイズは、メモリ使用量、ファイル使用量、さまざまな種類のプロセスの数など、多くのパラメータによって評価できます。 /dev/random は、新しい乱数を生成できない場合にプログラムをブロックし、エントロピー プールに従って新しいランダム バイトが生成されるまで戻りません。一方、/dev/urandom はブロックしません (ublock)。もちろん、生成される乱数の品質はあまり高くありません。 したがって、Tomcat に /dev/random ではなく /dev/urandom を使用して乱数を生成するように強制すると、速度が数分から数秒に大幅に向上します。 追加情報: Tomcat の起動が非常に遅く、ログにエラーが記録されていない場合の解決策 1. 問題 かつて Alibaba Cloud にプロジェクトをデプロイしたとき、プロジェクトに問題はありませんでした。しかし、Tomcat を起動すると、応答して Tomcat の起動プロセスが完了するまでに半日かかりました。 Tomcat の起動が非常に遅く、ログにエラーはありません。ログには次の情報が記録されています。
2. 理由 Tomcat 7/8 はどちらも、org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom クラスを使用して、セッション ID としてセキュア ランダム クラス SecureRandom のインスタンスを生成します。これには 342 秒、つまり約 6 分かかります。 SHA1PRNG アルゴリズムは、強力な機密性を備えた SHA-1 アルゴリズムに基づく疑似乱数ジェネレータです。 SHA1PRNG には、設定に応じてさまざまな操作を実行するシード ジェネレーターがあります。 1) java.security.egd プロパティまたは securerandom.source プロパティで "file:/dev/random" または "file:/dev/urandom" が指定されている場合、JVM はネイティブ シード ジェネレータ NativeSeedGenerator を使用します。これは、初期化のために super() メソッド、つまり SeedGenerator.URLSeedGenerator(/dev/random) メソッドを呼び出します。 2) java.security.egd プロパティまたは securerandom.source プロパティが別の既存の URL を指定する場合、初期化のために SeedGenerator.URLSeedGenerator(url) メソッドが呼び出されます。 このため、値を「file:///dev/urandom」または「file:/./dev/random」に設定すると機能します。 この実装では、ジェネレーターはエントロピー プール内のノイズの量を評価します。乱数はエントロピー プールから生成されます。読み取られると、/dev/random デバイスはエントロピー プール内のノイズからランダムなバイトを返すだけです。 /dev/random は、1 回限りの支払いやキー生成など、非常に高品質のランダム性を必要とするシナリオに適しています。 エントロピー プールが空の場合、エントロピー プールが十分な周囲のノイズ データを収集するまで、/dev/random からの読み取り操作はブロックされます。この目的は、暗号的に安全な疑似乱数ジェネレーターを実現することであり、エントロピー プールの出力は可能な限り大きくする必要があります。これは、高品質の暗号化キーを生成する場合や、長期的な保護が必要なシナリオの場合に重要です。 3. 解決策 解決策は2つあります。 1) TOMCAT環境で解決 JRE を構成することで、非ブロッキング エントロピー ソースを使用できます。 catalina.sh に次の行を追加します。
それでおしまい。 これを追加した後、Tomcat を起動すると、全体の起動時間が 2912 ミリ秒でサーバーが起動するまでに短縮されました。 2) JVM環境で解決する ファイル $JAVA_PATH/jre/lib/security/java.security を開きます。 vi コマンドで検索できます:
次のコンテンツを見つけます。
次に、次のように置き換えます。
上記の記事は、Tomcat の起動が遅い問題を素早く解決する方法について説明しています。これは非常にシンプルで、編集者が皆さんと共有した内容はこれだけです。皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
間違いNavicat Premium を使用して MySQL に接続すると、次のエラーが発生します。...
構造とプレゼンテーションを分離するもう 1 つの重要な側面は、セマンティック マークアップを使用して...
Web ページを設計する過程で、デザイナーが間違いを犯すのは必然です。特に新人は、新しいアイデアを実...
win docker-desktopを使ってコンテナ開発に接続し、ネットワーク上で色々試してみたいと...
この記事では、次のように、誰にでも共有できる左右幅固定のミドルアダプティブ HTML レイアウトソリ...
目次Linux での Hbase のインストールと設定1. Hbaseインストールパッケージをダウン...
Linux で新たに発見された sudo の脆弱性を悪用すると、特定のユーザーが root としてコ...
使用フレキシブル ボックスはフロントエンドの Web ページ レイアウトで重要な役割を果たしますが、...
デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...
•CSSには多くのセレクターがあります。複数のセレクターを同じ要素に適用するとどうなるでしょうか? ...
導入この記事では、Ubuntu 18.04 デスクトップ システムでディスクを目的のディレクトリにマ...
Linux で FTP サーバーを設定するためのチュートリアルを参照してください https://w...
今日皆さんにお伝えしたいトピックは、「皆さんがよく話題にするテーブル スペースとは一体何でしょうか。...
序文:データベースの運用や保守の際には、リンクの総数がいくつあるか、アクティブなリンクがいくつあるか...
目次1. 切り替え方法2. タブを動的に生成する3. キャッシュコンポーネント3.1 キープアライブ...