◆ユーザーの課題◆JTBのEC(電子商取引)サイトは,利用者数と取り扱いサービスが年々増加している。2000年秋に導入したWindowsベースのシステムは,稼働当初にはピーク時の5倍という処理能力を持っていたが,2003年には処理能力に余裕がなくなりつつあった。

◆選んだ解決策◆2003年春と秋にWebサーバーをWindows Server 2003のIIS 6.0にバージョンアップし,2004年1月にはデータベース・サーバーを64ビット版SQL Server 2000に切り替えた。それに合わせてハードウエアも増強した。

◆結果と評価◆64ビット版SQL Server 2000への移行は,32ビット版SQL Server 2000でシステムを再構築するよりコストを抑えられた。また,移行に伴うアプリケーションの変更がほとんどなかったため,移行作業が迅速に進んだ。

図1●JTBの旅行商品販売サイトを取り巻く状況
2000年秋にシステムを導入した際,想定される処理量の5倍の処理能力が用意されていた。しかし,3年たって処理能力に余裕がなくなってきたため,2004年1月にデータベース・システムを64ビット化した。
図2●64ビットCPUを採用した要因
同じ性能を求める場合,64ビット・マシンの方が32ビット・マシンよりもプロセッサ数が少なくなる。その結果,ライセンス・コストやプロセッサ以外のハードウエア・コストも64ビット・マシンのほうが安くなることが分かった。
図3●JTBのECサイトのシステム構成
2003年5月に参照系のWebサーバーを,2003年11月には予約系のWebサーバーをIIS 6.0に移行した。2004年1月にはデータベースを64ビット版SQL Server 2000に移行している。

 大手旅行代理店のジェイティービー(JTB)は,旅行商品を販売するEC(電子商取引)サイトの処理能力を大幅に増強した。同社が従来のWindows 2000 Serverベースのシステムを稼働させたのは2000年秋のこと。WebサーバーにIIS(Internet Infomation Services)5.0,データベース・サーバーにSQL Server 2000を採用し,データベース・サーバーのハードウエアには日本ユニシスの大型PCサーバー「ES7000」を使用する大規模システムだった。

 そのシステムも導入から3年が経ち,当初は十分と思われていた処理能力に余裕がなくなり始めた。そこでJTBは処理能力の大幅向上を狙って,2003年5月と同年11月にWebサーバーを,2004年1月にはデータベース・サーバーを新システムに切り替えた。

 WebサーバーはIIS 6.0,データベースは64ビット版のSQL Server 2000で,OSはいずれもWindows Server 2003である。これらは国内におけるIIS 6.0や64ビット版SQL Server 2000の導入事例として,先駆けとなるものであった。

処理量が3年間で3.5倍に

 JTBのECサイトは商品情報を紹介する「参照系」のシステムと,実際に商品を予約・販売する「予約系」のシステムからなる。2000年秋に既存システムを導入した際には,参照系,予約系とも想定される処理量(SQL ServerのトランザクションやCPU使用率などを総合的に勘案した目安)の5倍の処理能力があったという。例えばデータベース・サーバーは,900MHz動作のXeonプロセッサを16個搭載する「ES7000/100」だった(図1[拡大表示])。しかしJTBのECサイトでは,2003年には2000年比で処理量が3.5倍に増大し,処理能力に3割程度の余裕しか残されていなかった。

 処理量が増加した要因は利用者の増加だけではない。同サイトの取り扱い商品は当初,国内旅行や海外旅行のパッケージ商品が中心だったが,年々取り扱い商品が増加した。提携旅館やホテルの予約をはじめ,テーマパークや高速バスのチケットなど他社商品の販売も始まった。

 一方,「セブン-イレブン」「ローソン」など大手コンビニエンス・ストアの店舗に設置された店頭端末でも旅行商品を販売するようになった。このトランザクションを受け付けるのもECサイトの予約系システムである。

 新サービスの追加によって,ECアプリケーションも複雑化した。特に「システムに負荷がかかるクエリーの長い処理が増えた」(Webトラベル事業部の北上真一事業部長)ことが,処理量の大幅な増大につながった。そこでJTBは,「今はまだ処理量に余裕はあるが,今のペースでサービスを追加していったらシステムが近い将来パンクする」と判断し,2004年に想定される処理量に対して5倍の能力を確保できる新システムに更新することにした。

64ビット版SQL Server 2000を採用

 新しいデータベース・サーバーには,64ビット・プロセッサItanium 2を8個搭載した「ES7000/420」を2台採用した。各サーバーはItanium 2を最大16個まで増設可能だ。既存のシステムは1台のES7000の内部を2ノードに分割して運用していたので,各ノードをそれぞれ独立した64ビット・サーバーに移行させたことになる。

 64ビット・サーバーを採用した理由は,「32ビットのマシンを使用するのに比べて,コストを抑えられるから」(北上事業部長)という(図2[拡大表示])。

 新サーバーは従来のサーバーに比べて,プロセッサ数は同じなのに,処理能力は3倍に増強された。将来,プロセッサ数を2倍に増やせば,従来に比べて5倍の処理能力が確保できるという。しかし,32ビットのマシンで従来の5倍の処理能力を実現するためには,「動作周波数の高いプロセッサを採用したとしても,必要なプロセッサの数は2倍では済まない」(北上事業部長)ところだった。これは,「既存の32ビット・プロセッサは,CPUの数を2倍,3倍にしても性能は2倍,3倍にならない」(同)という問題があるためだ。

プロセッサ・ライセンスを節約

 プロセッサの個数は,コストを考える上で重要である。なぜなら「SQL Server 2000 Enterprise Edition」のプロセッサ・ライセンスは,マイクロソフトが公表する参考価格で1プロセッサ当たり349万2200円(Open Licenseの場合)もするからだ。これは,32ビット,64ビットとも同価格である。つまり少ないプロセッサ数の64ビット・サーバーのほうが,たくさんのプロセッサ数の32ビット・サーバーよりも,低コストでSQL Server 2000を導入できる。またプロセッサの数が増えると,大容量の電源装置や冷却装置などハードウエアの費用が急増する。

 もちろん,ライセンスやハードウエアの費用を抑えても,新システムに移行するために既存アプリケーションを作り直したのではコスト削減にならない。その点について北上事業部長は「64ビット版SQL Server 2000は32ビット版とほぼ完全な互換性があった」と語る。32ビット版SQL Server 2000向けに記述したSQL文やストアド・プロシージャに手を加えなくても正しく動作するかどうか,1カ月かけて検証した結果,「自社開発アプリケーションの改変は1カ所だけだった」(同)。移行作業そのものも「既存の32ビット版SQL Server 2000のユーザー・データベースをバックアップし,それを64ビット版SQL Server 2000にリストアするだけ」(Webトラベル事業部の安岡一郎システム・計画担当課長)と容易だった。

チューニングしやすくなったIIS 6.0

 今回のSQL Server 2000の移行によってJTBの予約系のシステムはすべて新システムに移行した(図3[拡大表示])。

 予約系システムはIIS 6.0上で稼働するASP.NETアプリケーションである。北上事業部長はIIS 6.0を選択した理由について「ASP.NETはWindows 2000と.NET Framework,IIS 5.0の組み合わせでも利用できるが,パフォーマンス・チューニングが容易というIIS 6.0の良さを評価した」と語る。

 IIS 5.0までは,IISの設定情報である「メタベース」は独自のバイナリ形式で記録されていた。そのため,標準のマイクロソフト管理コンソール(MMC)から設定できる範囲は限られており,それ以外の部分をユーザーが自由にチューニングすることは難しかった。しかし,IIS 6.0ではメタベースがXML化され,XMLタグも仕様が公開されている。

 JTBはこの特徴を利用して,商品を表示する参照系のIIS 6.0が,なるべく多くのページをメモリー上にキャッシュするようにチューニングした。一方,データベースとの通信が多い予約系のIIS 6.0ではネットワークがボトルネックになりやすいので,ネットワークの負荷を軽減するよう,パケット・サイズを最適化した。

 IIS 6.0を稼働させるサーバー機には,パフォーマンスを最大限引き出せるよう4Gバイトのメモリーを搭載した。32ビット版Windows Server 2003には,?1プロセスに割り当てられるメモリーは最大1Gバイト,?カーネル・モードのメモリー空間が2Gバイト,ユーザー・モードのメモリー空間が2Gバイトに固定されている――といった制限があり,「4GバイトのメモリーをIIS 6.0が有効に使えるよう,OSのレジストリも含めたチューニングを施した」(北上事業部長)。このようなチューニングの容易性はIIS 6.0ならではだと語る。

(中田 敦=anakada@nikkeibp.co.jp)