手軽なチューニング方法
手軽なチューニング方法
それではJBossの具体的なチューニング作業の説明に移ります。まずは手軽(=ソースコードの変更無し)に実施しやすいものから説明します。
Java VMの変更
JBoss 3.2.6以上であればJava VM(JVM)バージョン5で動作します。1.4.xのJVMを使用している場合はJVM 5への移行を試みてください。1.4.xから5の間に大きく改善されたのはガーベッジコレクションのパフォーマンスです。ガーベッジコレクションのために サービスが中断するような現象が発生している場合は試してみる価値があるでしょう。
また、利用しているサーバがIntelのx86系CPUであるならば、BEA社が開発および提供しているJRocket(※注1)を使うとかなりパ フォーマンスの向上が期待できます。一般的には10〜30%程度向上するといわれていますが、システムの特性によって大きく異なります。
JDK 5:http://commerce.bea.com/products/weblogicjrockit/5.0/jr_50.jsp
JDK 1.4.2:http://commerce.bea.com/products/weblogicjrockit/1.4.2/142_05.jsp
JVMに渡すパラメータによってもガーベッジコレクションをはじめとする様々な挙動の調整が可能です。詳細はJDKに付属のドキュメントを参照してください。
ハードウェアの変更
2つ以上のCPUを搭載したサーバを用意しましょう。マルチプロセッサの方が多くのスレッドを扱うことができます。JBossをはじめとするJ2EEサーバはスレッドを多く使用します。このスレッドを効率よく扱うことがパフォーマンスの向上につながります。
JBossではCPUの数によってライセンス費用が増えることもありませんので、その分ハードウェアの予算を確保しやすいのではないでしょうか。
Tomcatの設定
TomcatはJBossに内包されているWebコンテナですので、ここでの設定 もパフォーマンスに大きく影響します。まずはJBossの起動設定が保存されているディレクトリ(デフォルトでの起動であれ ば$JBOSS_HOME\server\default)にある「deploy\jbossweb-tomcat50.sar\server.xml」 をテキストエディタで開いて見てみましょう。設定ファイルの上の方に以下の様な設定があると思いますが、これはスレッド数に関する設定箇所です。
maxThreads="150" maxHttpHeaderSize="8192"
minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
ここを次のような大まかな指針を元に調整します。
| maxThreads | 予想している最大スレッド数+25%のスレッド数を指定する | |
| minSpareThreads(常に維持している最低スレッド数) | 平常時の負荷よりちょっと多めのスレッド数を指定する | |
| maxSpareThreads(minSpareThreadsの数を超えた時に、常に維持している待機スレッド数) | ピーク時のスレッド数よりちょっと多めのスレッド数を指定する | |
次に「deploy\jbossweb-tomcat50.sar/conf /web.xml」ファイルをエディタで開き、JspServletに関する設定でdevelopmentを「false」にします。デフォルトでは developmentパラメータの記述がありませんので追加してください。
falseにすることで、JSPに対してアクセスがある度にJSPに変更が加えられたかどうかチェックしなくなり、また、コンパイル済のJSPに対 して変更が加えられた場合は、バックグラウンドJSPのコンパイルが自動的に行われ、コンパイルが完了した後に既存のものと置き換わるようになります。
上記の設定で、いったんデプロイされコンパイルされたJSPは自動的にコンパイルされるのですが、最初にデプロイされたばかりの状態ではJSPは自 動的にコンパイルされません。最初のアクセス時のコンパイルを不要とするために、すべてのJSPファイルをあらかじめコンパイルしておきます。具体的な作 業手順は次のURLなどを参考にしてください。