2017-09-14 21 views
0

Tomcatで(並列デプロイメントを使用して)新しいアプリケーション・バージョンをデプロイメント・プロセスにデプロイすると、使用可能なすべてのCPUリソースが消費されることに気付きました。これは、このアプリケーションの要求応答時間を許容できない値にして、アプリケーションサーバごとに数分の影響を与えます。並列デプロイ時のTomcatパフォーマンスの低下

新しいアプリケーションバージョンの展開に費やされたリソースを制限/絞り込み/優先順位付けして、古いアプリケーションバージョンが受け入れ可能な応答時間で要求を引き続き提供できる方法はありますか?

私たちはTomcat 8.5.20を使用しています。

+0

パラレルデプロイメントを使用しない場合の動作は何ですか?私はあなたが並列展開を言及しているので、一度にいくつかのアプリケーションを配備していると仮定しています。これは一般的です。多くの場合同時に更新されますか? –

+0

Tomcatごとに1つのアプリしかありません。パラレルデプロイとは、https://tomcat.apache.org/tomcat-8.5-doc/config/context.html#Parallel_deployment – Stephan

+0

に記載されているように、ゼロダウンタイムを達成するために同じバージョンの異なるアプリケーションを実行することを意味します。 。前日の話し合いでは全く違った方向へ私を導いてくれました。並列デプロイメントを使用したことはありませんが、私はその可能性に魅了されました。しかし、私は通常、ロードバランサを使ってマシンの1つをアップデートのバランスから外し、他のマシンが引き継ぐようにしています。トラフィックの少ないサイトでは、これを実行してください。私は他の人に答えを残します。 –

答えて

0

短い答えはノーです。

この場合、Tomcatはアプリケーションデプロイメントに単一のスレッドを割り当てます。 (起動プロセス中にアプリケーションを並列にデプロイするようにTomcatを設定できますが、そこにもデフォルトでは1つのスレッドしか存在しません)。

Tomcatプロセスで複数のコアを使用できる場合は、1つのスレッドですべてのCPUを使用できないようにする必要があります。せいぜい、単一のコアを消費すべきです。これは、アプリケーションのスタートアップコードがマルチスレッドであることを示しています。おそらくアプリケーションの初期化コードを変更するために、プロファイラーを使って何が起こっているのかを見てみることをお勧めします。

Tomcatは、アプリケーションのデプロイメントを行うスレッドの優先度を制御するオプションを追加することができますが、リスクとメリットを評価するために変更の影響については十分に分かりません。

関連する問題