TomcatとJVMのパフォーマンス・チューニングの概要

Tomcatのパフォーマンスチューニング:

server.xmlファイルの内容を変更し、Tomcatのルートディレクトリの下のconfディレクトリを検索します。、私が学んできた曲のこの部分については、初期化時に作成されたスレッドの数と同時TomcatのTomcatサーバーの最大数の設定についてのセット以外の何ものでもありません、もちろん、他のパフォーマンスチューニングの設定があり、以下である私の私のマシンのパフォーマンスによって設定されたいくつかのパラメータの値は、あなたにそれについての詳細な説明を与えます:

1、はURIEncoding = "UTF-8":Tomcatの文字セットを設定します。私たちはTomcatの文字セットがあまりにも硬すぎる変更を直接、特定のプロジェクトに文字化け特定の治療について変換されますので、この設定は、我々は一般的に、設定されていません。

2、maxThreadsの= "300":同時現在のTomcatの最大数を設定します。リクエストのTomcatの最大数のデフォルトの設定では、同時に150の同時をサポートすることができる、つまり、150です。しかし実際には、同時ハードウェア性能の最大数とCPUの数は素晴らしい関係、より良いハードウェアを持って、より優れたプロセッサは、Tomcatは、より多くの同時をサポートするようになります。一般的に、実際の開発では、アプリケーションは250以上の同時を持っている場合、アカウントにクラスタ化されたアプリケーション・サーバを取る場合。

3、minSpareThreads =「50」:現在のTomcatの初期に作成されたスレッドの数を設定し、デフォルト値は25です。

4、acceptCountを=「250」:同時接続maxThreadsの数は、パラメータセットの値に達すると、接続の数は、キューを受信することができるが、接続を拒否し、この接続を介して直接返します。処理要求が任意の数のスレッドが使用されている使用することができたときに指定し、要求の数は、より多くの処理されません要求の数よりも、キュー・プロセスに入れることができます。デフォルト値は100です。実際には、あなたが同時のTomcatの数を増やしたい、とあれば、それはまたacceptCountをし、maxThreadsの値を大きくする必要があります。

5、enableLookups =「false」の場合:通常、処理能力を高めるためにはfalseに設定し、逆引き参照ドメイン名を開くかどうか、その値も真、めったに使いません。

6、maxKeepAliveRequests =「1」:nginxのダイナミック転送tomcatに、nginxのがキープアライブされていませんが、デフォルトで有効になってTomcatのエンドキープアライブ、キープアライブタイムアウトを待つことになる、デフォルトの設定はのConnectionTimeoutを使用しないことです。タイムアウトのTomcatと近いキープアライブTomcatの設定が必要です。それ以外の場合は、Tomcatの多くTIMEWAITソケットを生成します。maxKeepAliveRequests =「1」、それによってある程度離れダイTomcatを回避し、TomcatのTIME_WAITの接続を大量に回避することができます。

JVMのチューニング:

Tomcatの自体またはJVM上で実行するには、JVMパラメータは、Tomcatを調整することによって、私たちはより良いパフォーマンスを持つことができます。メモリチューニングとガーベジコレクションのポリシーの調整:現在JVMをチューニングするための2つの主要な側面を持っています。

後者は、JVMプロセスに起動パラメータとしてパラメータのJAVA_OPTSを開始しますとTomcatは、変数JAVA_OPTSに提供されるルートディレクトリの下のbinディレクトリを見つけるためにメモリチューニングは、ファイルをcatalina.sh。Java仮想マシンのメモリ構造がやや複雑であるだけでなく、私が理解する上で多くの人々は非常に抽象的であると信じて、それがヒープ、スタック、およびガベージコレクションのメソッドゾーンシステムのいくつかの部分に分かれているので、ここでは、インターネットからの私のチョップです図のメモリ構造:

それのメモリチューニングピース、自身のメモリ空間の大きさを変更することによって、より多くの何も、アプリケーションは以下の、より合理的な使用できるように右、あなたに各パラメータの意味の詳細な説明を与えるために、私のマシンの設定の性能に応じて、私のパラメータであります:

1、-Xmx512mは:ヒープサイズ=サイズ+パーマネント生成サイズのサイズ+旧世代にわたって兆(M)、若い世代:Java仮想マシン、ユニットのヒープの最大利用可能なメモリサイズを設定します。永久的な生成は、一般に固定サイズの64メートルです。ヒープの異なる分布は、それがシステムに何らかの影響を持つことになります。可能な限り、古いGCの(高齢者の通常比較的遅い回復)の数を減らすために、新世代のオブジェクトを予約します。実際には、初期値は、典型的には、このようにしてそのプログラムの性能を向上させる、実行しているプログラムによって実行広がりガベージコレクションと空間の数を減少させる、最大値及びスタックに等しく設定されます。

Java仮想マシンのヒープメモリのサイズの初期値、単位設定:-Xms512m 2は、MB(m)を、同じ値は、各ガベージコレクションが完了した後、メモリ再割当てJVMを回避するために、-Xmx設定することができます。

図3は、-Xmn170m:ユニット、メモリサイズの若い世代を設定:システム・パフォーマンスに兆(M)、この値が大きい衝撃、Sunの公式は3/8のヒープ全体の構成を推奨しました。メモリの若い世代での一般的な増加した後、それはまた、旧世代のサイズを小さくします。

図4は、-Xss128k:各スレッドのスタックサイズを設定します。各スレッドのスタックサイズは256Kである前に、各スレッドのスタックサイズ後JDK5.0は、1Mです。必要な調整の複数のアプリケーションのメモリサイズを通します。同じ物理メモリでは、この値を小さくするとより多くのスレッドを生成することができます。しかし、プロセス内のオペレーティング・システムのスレッドの数はまだ3000と5000にはない無限の世代、経験、制限されています。

5、-XX:NewRatio = 4:(エデン二サバイバー領域を含む)若い世代と旧世代比(除去永久世代)を設定します。4に設定されている、若い世代のシェアと1の旧世代比:4、スタック全体の1/5のために若い世代を占めています。

6、-XX:SurvivorRatio = 4:エデンサバイバー若い世代領域の面積比の大きさを設定します。図4に示すように、総面積サバイバー若い世代1/6:4に設定されている、サバイバーエデンゾーンを有する2つの領域の比は2です。

7、-XX:MaxPermSizeを= 16メートル:16メートル永久世代のサイズを設定する、上記述べた、永久的な生成は、一般に固定サイズのメモリ64メートルです。

8、-XX:MaxTenuringThreshold = 0:ごみの最大の年齢を設定します。サバイバーエリアなし、直接古い世代にオブジェクトの0に設定すると、若い世代。効率を向上させることができるアプリケーションの古い世代の多くのため。この値が大きい値に設定されている場合、若い世代のオブジェクトは、若い世代への導入の増加、すなわちリサイクル、オブジェクトを増大させ、その後、生存時間の若い世代ができ、サバイバー領域に何回もコピーされます。

II:ガーベージコレクション・ポリシーのチューニングTomcatのルートディレクトリの下のbinディレクトリを見つけるためには、catalina.shファイルJAVA_OPTS変数に設定されています。正確には、このため私たちは、多くの場合、ガベージコレクションのポリシーのJava仮想マシンはそれに応じて調整することが、我々は、すべてのJava仮想マシンがデフォルトのガベージコレクションを持っていることを知っているが、別のガベージコレクションのメカニズムの効率が異なっています。ここでは、ガベージコレクションによって私の戦略の一部を構成するために必要です:

シリアルコレクタ、コレクタ並列と並行コレクター:Java仮想マシンのガベージコレクションの方針は、一般的に分割されています。

シリアルコレクター:

図1は、-XX:+ UseSerialGC:シリアルコレクタの代わりにガベージコレクションポリシー、即ち、スキャンの全体のプロセスであり、時間の要件を一時停止する単一のCPU、小さく、スペースの新しい世代に適用されるシングルスレッドアプローチをコピー非常にありません高いアプリケーションは、デフォルトでは、主にガベージコレクションのJDK1.5形式の前に、クライアントレベルのGC法です。

同時コレクター:

1は、-XX:+ UseParallelGC:パラレルコレクタ(優先スループット)の代わりにガベージコレクションポリシーは、すなわち、スキャニングは、アプリケーションのマルチ、短い休止時間の要件のためにCPU、全体の複製プロセス及びマルチスレッドようにわたって行われますサーバーレベルで使用されるデフォルトのGC法です。この構成では、若い世代のために有効です。この構成は、まだシリアルコレクターの古い世代を使用しながら、若い世代は、同時コレクションを使用できるようにすることができます。

2、-XX:ParallelGCThreads = 4:多くのガベージコレクションのスレッドと同時に:すなわち、スレッドの数パラレルコレクタ構成。この設定値は、プロセッサの数に等しいことが好ましいです。

3、-XX:+ UseParallelOldGC:設定し、旧世代のガベージコレクションが並行して収集されます。パラレルコレクターの旧世代のためのJDK6.0のサポート。

4、-XX:MaxGCPauseMillis = 100:あなたはこの時間を満たすことができない場合には、たびに最大の時間を若い世代のガベージコレクションを設定し、JVMが自動的にこの値を満たすために若い世代のサイズを調整します。

5、-XX:+ UseAdaptiveSizePolicy:このオプションが設定され、自動的に最も低い目標周波数に対応した若い世代領域のサイズと対応するレートサバイバー領域、所定の時間を選択するか、システムを収集するパラレルコレクタは、この値は、並列コレクタを使用することが推奨されますデバイスが開かれたとき。

同時コレクター:

1、-XX:+ UseConcMarkSweepGCを:コレクタの代わりに同時ガベージコレクションの方針。

好了,到此我对虚拟机的垃圾回收策略总结就这么多,还是这句话:优化的学习一直在路上,下面还有一张从其他博客中偷到的图,据说以上三种GC机制是需要配合使用的。

おすすめ

転載: www.cnblogs.com/jackyu888/p/11572534.html