...

Webシステム開発・運用を 乗り切るテクニック

by user

on
Category: Documents
16

views

Report

Comments

Transcript

Webシステム開発・運用を 乗り切るテクニック
Solution Flash
大規模化・安定稼働・開発効率化…
第1回:チューニング① 多重度・流量制御の最適化
Webシステム開発・運用を
乗り切るテクニック
協力:日立製作所 http://www.cosminexus.com
はじめに
インスタンスプールサイズ、
⑥ DB(データベース)サー
バ接続用コネクションプールサイズなどのパラメータ
を適切に設定していきます。そして、システムの要件
現在の Web システム開発・運用では、特に大規模化
を満たすための適切なパラメータを設定するためには、
するシステムの安定稼働、パフォーマンスの向上、シ
長年の経験によるノウハウやテスト環境での検証を通
ステムのスケールアップやスケールアウトの実現が求
じて探っていくことになります。
(図 1)
。
められます。また開発フェーズではこれまで以上の効
Cosminexus では、これまでのシステム構築を通
率化に加えて、新しい技術的な取り組みを踏まえたシ
じて蓄積してきた知見を体系化したドキュメントノウ
ステム開発も必要となります。
ハ ウ を「uCosminexus SI Navigation System」 と い
本連載では、これらシステム開発者を取り巻く要求
うツールにシステム化しました。このツールでは、条
事項をどのように解決していけばよいのか、解決のた
件に応じた適切な流量制御および DB(I/O)周りを
めのソリューションとしてはどのようなものがあるの
かについて、日立の AP(アプリケーション)サーバで
ある Cosminexus を題材として取り上げながら解説し
ていきます。連載第 1 回の今回は、多重度・流量制御
を中心に、
DB(データベース、I/O)のチューニング(最
中心とした各種のパラメータ設定が可能です。なお、
「uCosminexus SI Navigation System」については本
連載の次回以降で詳解します。
安定性確保のための流量制御
適化)などにも触れて解説します。
要件どおりのリクエストを処理できるようシステム
チューニングとは
を設計したとしても、リクエストがシステムの処理能
システム構築においては、CPU やメモリ容量など限
なります。実際の運用時には想定外のリクエストが発
りあるリソースを最大限に有効活用するとともに、機
生する場合が多々あり、システムの安定性を確保する
能要件を満たすレスポンスやスループットを得られる
ために運用時の負荷状態を考慮する必要があります。
力を超えてしまうと安定したサービスの動作が困難に
ようにアプリケーションの構造や設定を調整する必要
こういった場合に備えて、流量制御で負荷を軽減す
があります。そのために不可欠な作業が性能チューニ
る必要があります。流量制御とは、システムで受け付
ングです。
けるリクエスト数の上限を区切ることに加えて、重い
性能チューニングでは性能測定とボトルネック要因
処理と軽い処理がある場合にバランスよくキューを配
の分析および対処を繰り返し実施し、個々のボトルネッ
分し、重い処理と軽い処理を並行して実行できるよう
ク要因を排除していきます。性能向上を突き詰めてい
にするものです。このためには、重い処理に割り当て
くと際限なくチューニングを繰り返すことになりかね
られるスレッド数を固定するとよいでしょう。通常の
ませんので、目的の性能を得られた時点でチューニン
システムでは処理の軽重による流量制御はサーバを分
グを終了することも重要です。
けて対応するために、サーバを複数台導入するような
Web システムの性能および安定性を確保するために
ケースが多く見られますが、Cosminexus の場合は、
は、① Web サーバの最大同時接続数、② Java EE サー
メインフレームなどによる基幹情報システムの開発経
バ接続用コネクションキャッシュサイズ、③実行待ち
験で培ってきた安定稼働のノウハウを活かし、業務ロ
キューサイズ、④ Java EE(Java Platform, Enterprise
ジックレベル(URL グループ単位)でキューを分けて流
Edition)サーバの同時実行スレッド数、⑤ SessionBean
量制御するため、AP サーバを分ける必要がありません。
208 ● WEB +DB PRESS Vol.49
第1回:チューニング① 多重度・流量制御の最適化
●図 1 処理の流れと流量制御パラメータの一覧
●図 2 Web アプリケーションの安定性能確保
EJB アプリケーションの安定性確保
EJB アプリケーションを安定稼働させつつシステム
リソースを有効活用するには、流量制御に加えて、リ
クエスト単位での優先制御や EJB 単位のサービス閉塞、
動的な負荷分散が求められます。
Cosminexus ではこれらを標準で装備するとともに、
さまざまな運用オプションに対応しています。
動的負荷分散では、負荷状況に応じたスケジューラ
これによってシステム全体の安定稼働が可能になり、
間のリクエスト転送ができます。流量制御では前述の
運用面でも煩雑さがなくなるというメリットがあります。
URL によるキューの適切な割り当てに加え、業務の最
システムの安定性を確保するためには、リクエスト
大同時実行数の制限やキューの滞留監視、同時実行数
処理の負荷をうまく分散する流量制御が欠かせないも
の動的変更を備えています。これはリクエストキュー
のです。それでは次に、Web アプリケーション、EJB
の滞留状態を監視し、スローダウンが閾値を超えると
(Enterprise JavaBeans)アプリケーションの安定性能
系を閉塞するとともに、スローダウンが解消された場
確保について見ていくことにします。
合は自律的に回復動作を実行します。すなわち、自律
Web アプリケーションの安定性確保
定性を確保しシステムリソースの有効活用を実現して
たとえば朝の始業時のように、処理に時間を要する
いるのです(図 3)
。
的かつ動的な処理により、EJB アプリケーションの安
ログイン処理が集中するケースを想定してみましょう。
重い処理と軽い処理でキューを共有し流量制御をし
●図 3 EJB アプリケーションの安定性能確保
ない場合、リクエストは先着順に実行されます。重い
ログイン処理中はすべてのスレッドで実行するので、
ほかの軽い業務へのリクエストは実行待ちになります。
このため、クライアント多重度が一定の値を超えると
全体的なスループットは低下してしまいます。
Cosminexus では、重い処理と軽い処理とでキュー
を分けて流量制御する場合は、前述のように重い処理
と軽い処理をバランスよく扱うため、並行して効率よ
く実行できます。異なる業務をバランスよく実行でき
るため、クライアント多重度が上昇しても全体的なス
ループットの低下は抑制できます(図 2)
。
WEB +DB PRESS Vol.49 ● 209
Solution Flash
大規模化・安定稼働・開発効率化…
Webシステム開発・運用を乗り切るテクニック
安定性確保のための DB(I/O)最適化
数のリクエストを処理できるかの「多重性能の検証」
があります(図 4、図 5)
。これらの検証作業の負荷を
軽減しつつ適切な検証を行えることが、効率的なシス
DB(I/O)アクセスはソフトウェアリソースにおいて
テム開発に直結します。
ボトルネックとなりやすいポイントであり、安定性を確
さらに実稼働環境では、設計段階や検証段階では予
保するためには最適化が不可欠です。その主なチューニ
想しきれなかったさまざまなトラブルが発生すること
ング手法には、AP サーバが DB とのコネクションを作
がままあります。その原因がクライアント/AP サーバ
成してメモリにプールし、DB へのリクエスト時に再利
(Web サーバ、Java EE サーバ)
/ DB サーバ/ネット
用する「DB コネクションプーリング」と、DB へのアク
ワークなどシステムのどこにあるのかを速やかに把握
セス時に作成するステートメントの一部をプールし再利
し適切に対処することが、効果的なチューニングとシ
用する「ステートメントプーリング」の 2 種類があります。
ステムの安定稼働には不可欠なのです。
Cosminexus で は 前 述 の uCosminexus SI Naviga
すなわち、設計・開発・検証・運用を効率的に実施
tion System に含まれるドキュメントに最適化の指針が
できる環境が、理想的な環境と言えます。
載っていますので、これに基づいて DB の最適化を効
率よく実現できます。
アプリケーション修正時の負荷軽減
システム不良の修正やチューニングのために
実効的なチューニングとテスト
ア プ リ ケ ー シ ョ ン を 修 正 す る 場 合、 た と え ク ラ
要件を満たすシステム性能を確保するためには、性
(WebArchive Format)や EJB-JAR(Java ARchiver)
、
能向上させるためのチューニングとその実証を行うテ
EAR(Enterprise ARchive)を再アーカイブしなけれ
ストが必要となります。システムの実効的なチューニ
ばならず、アプリケーションの入れ替え手順が煩雑に
ングやテストを実施するには、適切なポイントの把握
なってしまいます。
と設定、作業の工数削減、システムやアプリケーショ
Cosminexus は任意のディレクトリに置かれたファ
ンの修正・再構築時における負荷軽減、実稼働環境で
イルからデプロイする方式のサポートにより、アプリ
ス フ ァ イ ル を 1 つ 更 新 し た だ け で あ っ て も WAR
テストする場合は影響の抑制などが重要です。チュー
ケーション入れ替え作業をシンプル化し効率を大きく
ニングやテストにおいて適切なポイントを把握してい
向上しました。アプリケーションの修正時に再アーカ
ないと、システムの性能や信頼性を十分に確保できな
イブが不要であり、クラスを更新すると自動的または
かったり無駄な工数が生じたりといった事態を招いて
コマンドでリロード可能なのです。
しまいます。さらに、テスト環境でチューニングした
また、通常の環境ではアプリケーションの入れ替え
結果を実稼働環境へスムーズに移行できれば、効率的
時にはインポート後にアプリケーション属性を毎回設
なシステム構築が可能になります。
定しなければならず、作業の負荷が増大するという問
性能要件の検証
題がありました。Cosminexus では環境定義ファイル
「cosminexus.xml」のサポートにより、インポート後
性能要件の検証には、単一のリクエストを要件どお
の作業を大きく軽減できます。これは独自設定をあら
り処理できるかを検証する「単体性能の検証」と、複
かじめ EAR に含めることで実現しており、インポート
●図 4 単体性能の検証フローチャート
●図 5 多重性能の検証フローチャート
210 ● WEB +DB PRESS Vol.49
第1回:チューニング① 多重度・流量制御の最適化
後すぐにアプリケーションを開始できます。従来の AP
モード」という機能を備えており、実稼働環境でのテ
統合属性も引き続きサポートしていますので、何らか
ストを通じてアプリケーション入れ替え時のトラブル
の事情で従来の手法を用いたいケースでも問題ありま
リスクを低減できます。AP サーバのテストモードでデ
せん(図 6)
。
プロイすると自動的にオンラインアプリケーションと
テスト環境と実稼働環境での検証
は別名で登録するため、実稼働環境に影響を及ぼすこ
となくテストできるのです。
アプリケーションの修正も完了し、テスト環境で
また、アプリケーションの入れ替え作業は動的に可
チューニングとテストを終えて実稼働環境に移行する
能でシステムを停止する必要がないため、実稼働環境
には、実稼働環境でもテスト環境と同じ手順で環境を
の稼働中でも実施できます。
構築しなければならないのが通例です。また、実稼働
環境でテストする際、通常はシステム全体を停止しな
障害原因の特定における負荷の軽減
ければならないため、オンライン業務が稼働していな
い時間帯に実施するか、テストの実施中は業務を停止
設計・開発・検証・運用の、どこの段階においても
せざるをえません。
システムで障害が生じた場合、その原因を特定して適
Cosminexus では各種パラメータを「環境定義ファ
切に対処することが肝要です。ごく当たり前のことと
イル」としてエクスポート/インポート可能であり、
は言え、現実的にはさまざまな困難がつきまといます。
テスト環境からエクスポートした定義ファイルを用い
原因特定や対策の検証にはテストが欠かせませんが、
て実運用環境にインポートして構築できます。環境定
その作業は大きな負担になりがちです。しかし、障害
義ファイルを用いた環境の構築はコマンド 1 つで実施
原因を特定するための再現テストが不要なら、負担を
できるため、手作業での再構築とは異なり、確実かつ
かなり軽減できます。
スムーズな移行が少ない工数で済みます。
Cosminexus の場合は「PRF トレース」というログ
さらに、業務の稼働中でもテストが可能な「テスト
によって状況を把握し原因を特定できるため、再現テ
●図 6 業務を動かしたまま本番環境でテストが可能
とにユニークな ID を付加しており、これを追うことで
ストは不要です。このトレースログではセッションご
トラブルの原因が AP サーバなのか DB サーバなのか、
あるいはクライアント−サーバ間の通信網にあるのか
を容易に特定できます。PRF トレースログの出力、お
よびユニーク ID 付加はデフォルトで備えている機能で
あり、システムに対するオーバヘッドは極小です(図 7)
。
また、Cosminexus は性能に影響をほとんど与えず
に詳細な各種稼動情報ログを出力できるのが特長です。
そのため、他の AP サーバから Cosminexus に乗り換
えたユーザは、そのログの量に驚くことが多いようで
す。しかしこれは、ミッションクリティカルなメインフ
レームのシステムで培ってきたノウハウを Cosminexus
●図 7 ブラウザからサーバまで一貫した性能分析を可能に
に継承しているためで、これらログによって再現テスト
を行うことなく障害原因の特定が可能となり、システム
の高い信頼性と可用性の実現につながっています。
次回予告
本連載の次回では、Java VM(Virtual Machine)の
メモリ管理機能であるガベージコレクション(GC)
、
日本語処理における課題を中心に、JavaVM における
メモリ管理技術について解説します。#
WEB +DB PRESS Vol.49 ● 211
Fly UP