2

Tomcat は mod_jk のロード バランサに過負荷時に別のワーカーを使用するように指示できますか? もしそうなら、どのように?

マルチテナント アプリケーションの永続化レイヤーに Kodo JDO を使用しています。メモリ使用量の大きな要因は、データベースごとに読み込まれるスキーマ情報です。私のアプリケーションを使用するすべての組織は、独自のデータベースを持っています。アプリケーションは、クラスタリングまたはセッションのシリアル化をサポートしていません。それらをサポートするために改造することは、このプロジェクトの範囲外です。

Tomcat の各インスタンスは、ガベージ コレクターが窒息しないように 4GB のヒープに制限されています。Tomcat の単一インスタンスには、すべての組織に必要なすべてのデータベースのスキーマをロードするのに十分なメモリがありません。

Tomcat の負荷分散は通常、セッションごとに行われます。セッションごとにバランシングを行うと、1 つのインスタンスがそのメモリが保持できるよりも多くのスキーマをロードする可能性があり、GC オーバーヘッド制限で終わるゆっくりと痛みを伴う死に至る可能性があります。

私の現在の回避策は、別々のホスト名を持つ複数の明示的に別々のインスタンスを使用することです。各組織は、これらのホスト名の 1 つにアクセスできます。

1 つのオプションは、「完全な」Tomcat がユーザーにサービスを提供できないことを通知することです。

Tomcat は mod_jk のロード バランサに過負荷時に別のワーカーを使用するように指示できますか? もしそうなら、どのように?

4

1 に答える 1

1

興味深い質問 (+1)。答えが見つかったら、それを伝えてください:)

これを行う唯一の方法は、ロードバランサーを使用することです。

ロード バランサーを使用するもう 1 つの優れた機能は、HTTP ヘルス チェックを設定できることです。インスタンスのいずれかが応答を停止すると、次の正常なサーバーに移動します。

于 2012-03-09T02:26:02.183 に答える