1

カスタマイズされたバージョンのTomcatを使用してアプリケーションを開発します。テスト環境や開発環境でよく使用する動的クラス読み込みがサポートされており、本番環境でも使用した場合の影響が気になります。

私の知る限り、動的クラスローディングは、各アクセスでクラスローダーがクラスをポーリングするため、パフォーマンスの問題のために本番環境では使用されません。

ただし、このアプリケーションサーバーは、新しいクラスをロードするためのポーリング頻度の構成をサポートしています。

正しく理解していれば、動的クラスの読み込みをかなり長い時間(つまり、1時間)ごとにポーリングするように構成すれば、パフォーマンスへの悪影響をほとんど回避する必要があります。

本番環境では、このメカニズムは限られた数の方法で使用されます
。1)ユーザーのダウンタイムなしの緊急パッチ(最初のシャットダウン時に修正がリリースされます)
2)ソースがないクラスの永続的なパッチ(レガシーサードパーティ) libs)

これは信頼できるソリューションですか?

ありがとう

4

2 に答える 2

2

私見では、この機能を本番環境で使用しないでください。
ポーリングのオーバーヘッドとは別に、開発環境で問題を引き起こさない他の多くのシナリオが存在する可能性があります

私の頭に浮かぶいくつかのことは

  1. コンパイル時にインライン化される定数への影響
  2. パーマスペースへの影響
  3. 本番環境にデプロイしたバージョンを追跡できなくなる
  4. パッチ中にクラスファイルが欠落しているなどの間違いが発生する可能性があります
于 2012-09-25T09:48:15.133 に答える
1

使用している「カスタマイズされた Tomcat のバージョン」がわからないと、それを正しく理解しているかどうかを判断するのは明らかに困難です。ただし、缶に記載されていることを実行すると、ほとんどの悪影響を回避できます.

それでも緊急パッチングなどについては、以下で説明するように Tomcat Manager アプリケーションを使用するだけでよいのに、クラスがリロードされるまで 1 時間も待つ必要があるでしょうか?

この機能を緊急パッチまたは汎用パッチに使用する場合は、Tomcat Manager アプリケーションを使用して、必要に応じてリロードをトリガーすることを強くお勧めします。

リロード可能

Catalina で /WEB-INF/classes/ および /WEB-INF/lib のクラスの変更を監視し、変更が検出された場合は Web アプリケーションを自動的にリロードする場合は、true に設定します。この機能は、アプリケーションの開発中に非常に役立ちますが、実行時にかなりのオーバーヘッドが必要になるため、デプロイされた本番アプリケーションでの使用は推奨されません。そのため、この属性のデフォルト設定は false です。ただし、Manager Web アプリケーションを使用して、デプロイされたアプリケーションのリロードをオンデマンドでトリガーできます。

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

于 2012-09-25T09:22:41.237 に答える