本連載は、Javaアプリケーション・サーバの1つである、IBM社が提供するIBM WebSphere Application Server(以下、WAS)についてのパフォーマンス・チューニングに関する入門記事です。「パフォーマンス・チューニングの実施」といっても、実施するエンジニアによって、その方法は異なっております。本連載においては、WASを前提とし、かつ、80%のケースをカバーできることを目標とします(編集部注:WASのインストールから学びたい読者は、バージョンが3.5のときの記事ですが、連載「初めてのWebアプリケーション・サーバ」などを参照してください)。
連載第1回目は、WASのパフォーマンス・チューニングに当たり、実施しなければならないパフォーマンス・ボトルネックの把握および解析について、パフォーマンス・チューニング関連ツールの紹介を含めて解説します。
WASをデフォルト設定のままチューニングせずに(あるいは、ほとんど調整せずに)利用しているケースを見掛けることがあります。パフォーマンスのチューニングなどせずに、導入しただけで最適なパフォーマンス性能が得られることをWAS管理者としては望むと思います。Javaアプリケーション・サーバの機能が豊富になるのと裏腹に調整するべき項目も増加し続けています。そういう状況において、製品導入時の設定が全ケースにおいて最適であるとはいえないのが現状です。つまり、WASの性能を最大限に引き出すためには、やはりチューニングを行うことが必要になります。
「性能を最大限に引き出す」というのがポイントで、製品導入時のデフォルト設定のままWASを使用しているにもかかわらず、環境によっては十分な性能が得られているということもあります。その場合であっても、チューニングを施すことにより、より良い性能を引き出せる可能性を否定はできないでしょう。
技術的な理由以外の要因でチューニングを行えないケースもありますので、どのような環境においてもチューニングを絶対に実施してくださいとはいえません。技術的な観点から見てチューニングを行うことを「お勧めしている」とご理解ください。
WASのチューニングといった場合、WAS上で動いているアプリケーションのチューニングを指しているのか、WAS自体のチューニングを指しているのかを区別することが重要です。もちろん、その両方を指していることもあります。本連載では、基本的にはWAS自体のチューニングについて解説を行いますが、必要に応じて、アプリケーションのチューニングやアプリケーションとWASを組み合わせた場合のチューニングについても触れるようにします。
パフォーマンス・チューニングの実施において、まずは、現状把握を行うことが重要です。ここでいう現状把握とは、チューニング実施前の性能の把握に加えて、アプリケーション特性の把握やシステム構成の把握も含みます。こういった情報をチューニング実施時に把握していることが、実際のチューニング作業を効率よく進めるうえで非常に重要になります。具体的には、以下のような情報を入手しておきましょう。
編集部注:EJBについて詳しく知りたい読者は、Javaを紐解くための重点キーワードの「EJB (Enterprise JavaBeans)」を、JMSについて詳しく知りたい読者は、同じく「JMS(Java Message Service)」を参照してください。LDAPについて詳しく知りたい読者は、セキュリティ用語辞典の「LDAP」を、HTTPSについて詳しく知りたい読者は、同じく「HTTPS」を参照してください。
まずは、「システム構成」についてですが、WASを利用したシステムは、複数のTier(階層)によって構成されているケースが多いです。つまり、WASが稼働しているマシン以外にも、クライアントマシンやデータベースやメッセージング・キューマネージャーなどが稼働するマシンもパフォーマンス・チューニングの対象範囲となります。それらの「ハードウェア構成」の情報を把握しておいてください。
また、それらのハードウェアを接続しているネットワーク機器の情報、特に、バンド幅(Gigabit Ethernetか、100M Ethernetか、Full Duplexか、Half Duplexかといった情報も含む)は、パフォーマンス性能に影響を与えますので、注意が必要です。
「ソフトウェア構成」ですが、OS、ミドルウェア、JVMなどのリリースやパッチレベルの確認が必要になります。WASが連携するミドルウェアについても、リリースやパッチレベルなどの情報を入手しておくようにしましょう。
次に、「アプリケーションの特性」についてですが、「使用している各種テクノロジー」を把握することにより、それらテクノロジーを提供するWASのコンポーネントを把握でき、チューニング作業の範囲を限定できます。
「外部リソースへのアクセス」とは、例えば、リモートのデータベースへのアクセスなどのことであり、リモートのデータベースへのアクセスに最適なJDBCドライバを利用しているかどうかといったことをチェックすることが容易になります。
WASシステム管理者が管理・監視できない外部リソースへのアクセスがある場合には、それらのシステム管理者と協業することが重要です。
「CPUバウンド」の場合と「I/Oバウンド」の場合では、チューニング項目が異なりますので、それを把握しておくことによりチューニング作業を短縮することが可能になります。
また、「セキュリティ機能の使用」についても、その有無によってチューニングする項目が異なりますので、把握しておきましょう。
事前に把握しておくべき内容をすべて詳細に記載していると連載1回分の誌面をすべて埋め尽くしてしまいますので、今回はこの辺りまでにしておきます。まずは、上記の内容の把握から始めてください。
ここまでで、WASのチューニングを実施するための事前状況把握ができたとします。次に、パフォーマンス・チューニング実施の目的と実施結果に対する評価について検討しましょう。
パフォーマンス・チューニングを実施するケースとして、最も一般的に考えられるのが、「システムのサービス・インも近づき、本番アプリケーションを本番システム上で稼働させてストレステストを行ったところ思ったほどの性能が出なかった」というケースです。この場合、そもそものハードウェアキャパシティの見積もりに問題がある場合を除くと、アプリケーションおよびミドルウェアやOSのチューニングで問題解決を行います。
その際、「思ったほどの性能」とはどういう意味なのか、つまり、性能に対する具体的な目標値を理解することが必要になります。例えば、目標レスポンスタイムや最大スループット(トランザクション処理能力)、CPU使用率の何%低減といった数値目標を把握することにより、チューニングの結果がそれらの目標に達成したかどうかの判断が可能になります。
「ストレステストを行った」についても、詳しい情報が必要になります。例えば、同時リクエスト数(同時接続数)、Think Timeの有無、リクエストメッセージサイズなどを把握することにより、ストレステストの方法を確認できます。
さて、チューニング実施前の状況把握およびチューニング実施の目的・実施結果の評価についての検討が終わり、いよいよパフォーマンス・チューニングを実施することになります。繰り返しになりますが、ここまでの内容は、パフォーマンス・チューニング実施に際して重要になりますので、ぜひ、時間をかけて実施するようにしましょう。
WASは、システム管理者のパフォーマンス・チューニング作業を支援するツールをいくつか提供しています。それらは、IBMのWebサイトからダウンロードして使用するツール類と製品に同梱されているツール類の2種類があります。以下、それらツールを利用したパフォーマンス・ボトルネック把握方法を説明していきます。
システムのパフォーマンス・ボトルネックを見つけるために、WAS専用の各種ツールに加えて、OS付属のツールを使用しましょう。例えば、UNIX系OSの場合であれば、iostatやtopなど各種パフォーマンス関連ツールにより、ディスクI/OやネットワークI/Oの状況やCPU使用率、メモリー使用率をモニタリングできます。Windows系OSの場合であれば、パフォーマンス・モニターなどでそれらの情報をモニタリングできます。そういったツールを使うことにより、ネットワーク関連のボトルネックの検出(ネットワークバンド幅が不十分かどうかなど)や、多量のディスクI/O発生の検出などが容易にできます。
Copyright © ITmedia, Inc. All Rights Reserved.