2016-08-15 1 views
1

Dockerコンテナに関する質問があります。 同じ仮想マシン内のアプリケーションのコンテナ数を増やすと、より多くの負荷(コンテナ数の約倍)を処理することになります。多くの荷物を扱うドッカーコンテナ

リソースを明示的にコンテナに割り当てないと仮定します。また、リバースプロキシ(またはロードバランサ)をラウンドロビンメカニズムで要求をコンテナに転送する同じマシンで実行しています。現在のスループットが1つのコンテナの1000tpsであれば、3つのコンテナで〜3000tpsになるでしょうか?

パフォーマンスベンチマーキングを行った人はいますか?誰でもリンクを共有できますか?

答えて

2

Q:同じ仮想マシン内のアプリケーションのコンテナ数が増えると、処理負荷が増えますか?

A:現在のボトルネックの場所によって異なります。

仮想マシンが現在100%のCPU負荷で動作している場合は、より多くのコンテナを投げても明らかにスループットは向上しません。代わりに、新しいコンテナインスタンスの新しいプロセスに追加のCPUリソースを割り当てる必要があるため、tpsを劣化させる可能性があります。

VMが現在低い負荷で実行されていると仮定すると、RAMとディスクのIOは問題になりません。より多くのプロセスを投げることは、効率的でないコードで問題が発生することがあるため、パフォーマンスの向上を意味するものではありません。例えば。非同期呼び出しの応答を待機しているスレッド、またはプロセス全体がロックアップしているスレッド、またはスレッドがロックを待ってから、他のスレッドがロックを長時間にわたってホッギングしている間にさらに進むことができます。その他...

アプリケーションのアーキテクチャと既存のコードのボトルネックは、全体的なパフォーマンスにも大きな影響を与えます。

Q:は、コンテナの数の要因に基づいて約増加するスループットのでしょうか?

おそらくありません。 1つのコンテナが1k tpsを実行できる場合は、必ずしもn * 1kとは限りません。ここで、nはコンテナの数です。前述したように、考慮する変数が多すぎるためです。

パフォーマンス全体は、使用しているロードバランサとその構成方法によっても異なる場合があります。

一般に、アプリケーションの着信要求を調整するロードバランサを使用して、さらに多くのコンテナを投げる価値があります。パフォーマンスの向上が気に入らなければ、コードプロファイリングを行うことをお勧めします。おそらくシステムの負荷を調査して、これがなぜ起こっているのかという理論も出てきます。パフォーマンスに満足するまで、ボトルネックを1ずつ体系的に修正してください。

ボトルネックのロックを解除すると、別の新しいボトルネックが常に開かれます。

+0

@ user1819071これがあなたに役立つかどうかを教えてください。 –

+0

おかげで非常に有益でした。私たちはより多くの分析をしており、おそらくあなたにまた戻ってくるでしょう。 – user1819071

関連する問題