TomcatのとJVMのパフォーマンスチューニング要約
内容:
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" :SET CURRENT Tomcatの初期化時に作成されるスレッドの数、デフォルトは25 。
。4 、acceptCountを=「250」に:同時接続数に達したときmaxThreadsのの接続のパラメータセット番号の値は、キューを受信することができるが、接続を拒否し、この接続を介して直接返します。処理要求が任意の数のスレッドが使用されている使用することができたときに指定し、要求の数は、より多くの処理されません要求の数よりも、キュー・プロセスに入れることができます。デフォルト値は100です。実際には、あなたが同時のTomcatの数を増やしたい、とあれば、それはまたacceptCountをし、maxThreadsの値を大きくする必要があります。
5 、=「false」をenableLookups:逆引き参照ドメイン名をオープンするかどうかを通常に設定し、偽の処理能力だけでなく、その価値を高めるためにtrueにめったに使用しません、。
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つの側面があります。メモリー・チューニングをし、ガーベジコレクションのポリシーをチューニング。
メモリー・チューニング
設定し、Tomcatのルートディレクトリの下のbinディレクトリに移動しcatalina.sh ファイルの起動パラメータは、JVMプロセスの起動パラメータとしてJAVA_OPTSをバックアップしますので、JAVA_OPTS変数には、することができます。
Java仮想マシンのメモリ構造は、それが分割され、多少複雑であるヒープ、スタック、およびガベージコレクションシステム、方法エリアいくつかの部分および他の成分;
それのメモリチューニングピース、自身のメモリ空間の大きさを変更することによって、より多くの何も、アプリケーションは以下の、より合理的な使用できるように、パラメータ(パラメータの意味)個人的なホストのパフォーマンス設定に基づいています。
1 、-Xmx512m:セットのJava 仮想マシンのヒープの最大利用可能なメモリサイズ、単位:兆円(M) 、全体のヒープサイズ= 若い世代のサイズ+ 古い世代のサイズ+ パーマネント生成サイズ。
永久的な生成は、一般に固定サイズの64メートルです。ヒープの異なる分布は、それがシステムに何らかの影響を持つことになります。可能な限り、古いGCの(高齢者の通常比較的遅い回復)の数を減らすために、新世代のオブジェクトを予約します。実際には、初期値は、典型的には、このようにしてそのプログラムの性能を向上させる、実行しているプログラムによって実行広がりガベージコレクションと空間の数を減少させる、最大値及びスタックに等しく設定されます。
図2に示すように、-Xms512m:セットのJava 仮想マシンのヒープメモリのサイズの初期値、単位:MB (M) 、同じ値は、各ガベージコレクションが完了した後、メモリ再割当てJVMを回避するために、-Xmx設定することができます。
図3は、-Xmn170m:ユニット、メモリサイズの若い世代を設定:兆(M)システムのパフォーマンスに、この値は大きな影響、Sunの公式は3/8のヒープ全体の構成を推奨しました。メモリの若い世代での一般的な増加した後、それはまた、旧世代のサイズを小さくします。
図4は、-Xss128k:各スレッドのスタックサイズを設定します。各スレッドの後JDK5.0 スタックサイズは1M、各スレッドのスタックサイズは256Kである前に、。必要な調整の複数のアプリケーションのメモリサイズを通します。
同じ物理メモリでは、この値を小さくするとより多くのスレッドを生成することができます。しかし、プロセス内のオペレーティング・システムのスレッドの数はまだ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メートルを、永久的な生成は、一般に固定サイズのメモリであり、上記前記64M 。
8 、-XX:MaxTenuringThreshold = 0:ごみの最大の年齢を設定します。
サバイバーエリアなし、直接古い世代にオブジェクトの0に設定すると、若い世代。効率を向上させることができるアプリケーションの古い世代の多くのため。
この値が大きい値に設定されている場合、若い世代のオブジェクトは、若い世代への導入の増加、すなわちリサイクル、オブジェクトを増大させ、その後、生存時間の若い世代ができ、サバイバー領域に何回もコピーされます。
第二に、ガベージコレクションのポリシーの調整
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のと併せて必要であるといわれています。