2016-09-07 11 views
2

Javaアプリケーションサーバーは、複数の(マイクロ)サービスを実行するために一意のJVMを拡張しますが、ドッキングされたJavaマイクロサービスアーキテクチャは各ドッキングされたマイクロサービスに対してJVMを実行します。 20以上のJavaマイクロサービスと限られたホスト数を考えると、各ホスト上のJVMによって消費されるリソースの量は膨大であるようです。効率的にJavaマイクロサービスをドッキングする方法

この問題を効率的に管理する方法はありますか?リソース消費を制限するために各JVMを調整することは可能ですか? 目的は、Javaマイクロサービスアーキテクチャでドッカーを使用する際のオーバーヘッドを制限することです。

+1

あなたは何も尋ねなかった。あなたの問題は何ですか? –

答えて

2

各DockerおよびJVMのコピー実行では、メモリが使用されます。通常、1つのノードに複数のJVMがあると、共有メモリが使用されますが、これはdockerのオプションではありません。

できることは、各JVMの最大ヒープサイズを減らすことです。ただし、各JVMのオーバーヘッドにヒープサイズを加えたものとして、少なくとも1 GBのドッカーイメージを許可します。それはあまりにも多くのメモリのように聞こえるが、最近はそれほどコストがかからない。

各JVMに2 GBのヒープを与え、docker + JVMに1 GBを追加すると、20個のJVM /ドッカーを実行するには64 GBのサーバーが必要です。

+0

答えをありがとう。 JVMスタックの「カジュアル」な値はどこで見つけることができますか?実際、500MBは私のμS(担当者でさえ)のために十分に大きいようです。 (私はjvisualvでチェックします)。だから私はあなたが推奨する価値に感銘を受けた。 – DouglasAdams

+0

@DouglasAdamsクライアントの中には、100 TBの仮想メモリサイズのJVMを持つものがあります。 JVMごとに0.5 GBのヒープがある場合、オーバーヘッドでかなり多くのものが必要になることがわかります。 –

+0

@DouglasAdams JVMスタックの値はどういう意味ですか?デフォルトは何ですか?少数のスレッドを持っている場合は、調整する必要はありません。 –

関連する問題