TOP設計・移行・活用> 手軽なチューニング方法
オープンソースJ2EE APサーバ JBossの可能性
オープンソースJ2EE APサーバ JBossの可能性

第4回:JBossのチューニング
著者:ダイテックC&D  高橋 康弘   2005/5/20
前のページ  1  2   3  4  次のページ
手軽なチューニング方法

   それでは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%程度向上するといわれていますが、システムの特性によって大きく異なります。

※注1: 各々のバージョンについては下記参照。
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」をテキストエディタで開いて見てみましょう。設定ファイルの上の方に以下の様な設定があると思いますが、これはスレッド数に関する設定箇所です。

<Connector port="8080" address="${jboss.bind.address}"
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などを参考にしてください。

Webアプリケーションのコンパイル
前のページ  1  2   3  4  次のページ


株式会社ダイテックC&D
著者プロフィール
株式会社ダイテックC&D  高橋 康弘
入社以来Windowsを中心としたアプリケーション開発に従事。2000年頃からJavaを扱うようになり、2年ほど前からオープンソースを利用したシステム開発を開始。最近はJBoss+オープンソースの組み合わせでWEBアプリケーション開発に携わることが多い。
資格:JBoss認定コンサルタント


INDEX
第4回:JBossのチューニング
  構築後のチューニングと設計段階のチューニング
手軽なチューニング方法
  ログの出力レベルの変更
  SQL呼び出しの回数を削減する