2017-08-10 2 views
1

WebアプリケーションをJava 7からJava 8に移行しています。PermSize jvm param引数を定義しました。Java 8のメタスペースの理想的なサイズを決定する方法

Java 8はこのパラメータを無視するため、これは使用されません。メタ空間はJava 8で導入されており、デフォルトサイズは無制限(物理メモリに限る)であり、動的に拡張されます。

私の質問は、metaspace jvm paramsまたはdefaultのWebアプリケーションに最適な値を見つけ出す必要がありますか?

更新:私のWebアプリケーション上の

より: は私のWebアプリケーションがstrutsspringフレームワークに基づいています。通常、毎分4kリクエストが必要です。このアプリケーションはtomcat 8.5にデプロイされ、他のWebアプリケーションをホストしません。しかし、同じ仮想マシン上で複数のTomcatインスタンスが実行されています。現在の-Xms-Xmxの値は1gに設定されています。

+1

私は答えを編集することができます:アプリケーションの大きさと使用者の数同じサーバー上で複数のアプリケーションを実行していますか?アプリケーションが他のアプリケーションと同じマシンを共有している場合は、メモリの固定された上限を設定してください。リソースが不足していると、全体として本物の懸念事項になります。 – Wep0n

+0

@ Wep0n、私は私の質問で私のWebアプリケーションについて更新しました。 –

答えて

3

あなたが考えることができ、ここで複数のものがあります。

  1. 初期メタスペースサイズ:JVMは、メタスペースのサイズを変更する必要があるため、アプリケーションを起動したときに負と測定可能な影響を参照していますか?次に、最小サイズを設定する必要があります。それでも、これは、アプリケーションが大きくなると簡単に忘れられる設定になるため、これを避けるようにします。 -XX:MetaspaceSize=<NNN>

  2. 最大メタスペースサイズ:メタスペースが特定のサイズに拡大したときにアプリケーションが失敗するようにしますか?または、サーバーがこの点で取るリソースを制限したいですか?その後、おそらくメタスペースの最大サイズを設定する必要があります-XX:MaxMetaspaceSize=<NNN>

  3. メタスペースフリー比率:多くの異なるクラスを動的に読み込みますか?次に、メタスペースに自由な比率を定義して、常に新しいクラスのための十分なスペースがあり、クリティカルな状況ではサイズ変更が不要になるようにすることができます。 -XX:MinMetaspaceFreeRatio=<NNN>-XX:MaxMetaspaceFreeRatio=<NNN>

私の提案は、デフォルトに固執それをテストし、する必要がある場合にのみ反応するだろう。

+2

'-XX:MetaspaceSize'は初期サイズを設定しません。これは、ガベージコレクションを最初に超過したときにトリガーするしきい値を設定します。 – Holger

2

メタスペースの導入は、言及された動的メモリの増加/割り当てによってガベージコレクションになると、Javaのメモリ不足問題​​(IIRC)を修正しようとしていました。

私が言っていることは、実用的なものではありませんが、それを試してみてください。私は個人的にはデフォルトの動的設定に問題は一度もありませんでしたが、アプリケーションのサイズやストレスに依存すると思います。現時点では、デフォルト設定が適切であると仮定します。

関連する問題