目次


パフォーマンス事例研究

Zend Core for IBM と IBM DB2 9 を使用して 10,000 のアクティブ・データベース接続を処理する

Comments

エグゼクティブ・サマリー

PHP (PHP : Hypertext Preprocessor の再帰的頭字語) は今日の Web アプリケーション開発市場をリードする動的言語です。移植性が高く、使いやすく、データベースや企業データ・ソースへのアクセスが幅広くサポートされていることから、コンテンツ管理や e-コマース・システムの構築において広範囲に使用されています。IBM と Zend Technologies の協力の下で生まれた Zend Core for IBM® は、IBM データ・サーバー用として業界で唯一認定された、フルサポートの PHP 開発・実稼動環境です。

この研究で使用する PHP アプリケーションは、「オンライン・カタログにログインし、カタログを閲覧し、DVD を購入するユーザー」をシミュレートした DVD ショップ・アプリケーションです。システムの全体構成は 3 層モデルになっており、第 1 層は Web ユーザーの行動をエミュレートするドライバーを実行します。第 2 層は要求の代行受信を行う複数の Web アプリケーション・サーバーから成っており、別マシン上に構成された DB2 9 データ・サーバーにデータベース・トランザクションを送信します。

このホワイト・ペーパーで提示したソリューションは、Zend Core for IBM と IBM DB2 9 の優れたパフォーマンス、スケーラビリティー、総所有コストを実証しています。オンライン・ショップの顧客数増加に伴って Web サーバーをスケールアウトすることで実証しています。管理は 1 台の DB2 データ・サーバーが独自のコネクション・コンセントレーター機能 (データ・サーバー上でワークロードを管理・調整する機能) を使って行います。CPU やメモリーを追加する必要はありません。この強力な機能を通じて、数万のデータベース接続を同時に、かつ効率的に処理できるようになります。

Zend Core for IBM

Zend Core for IBM (資料1) は、IBM データ・サーバーで PHP アプリケーションを迅速に開発・実稼動していくための PHP 基盤を提供します。この製品は、DB2 9 や前バージョンの DB2 Universal Database™、Cloudscape™、IDS (Informix® Dynamic Server) などを含む全 IBM データ・サーバー・ファミリーと緊密に統合することができる上、XML や Web サービスに対するネイティブ・サポートも組み込まれています。Zend Core for IBM には、Web サーバーが IBM データ・サーバーと通信する際に必要となるソフトウェアがすべてバンドルされています。インストールは簡単で、Apache 2、DB2 Express、DB2 Runtime Client、Cloudscape、PHP 5 のほか、ibm_db2 などの PHP 拡張機能も搭載されています。Zend と IBM は、提携を通じて PHP コミュニティーを継続的に支援しています。Zend Core for IBM は無償ダウンロードが可能で、フルサポートが付属しています。

参考資料 1

Zend Core for IBM(US)

DB2 9

DB2 製品ファミリーは、数多くの賞を受け、多岐にわたるベンチマークで圧倒的な成績を叩き出してきた、高性能・高信頼性のデータ管理システムです。IBM では、DB2 9 の提供と合わせて、オファリングの合理化をさらに進めています(資料2)。セルフ・チューニング・メモリー管理 (STMM : Self-Tuning Memory Management) を始めとする新たな自動データベース管理機能が導入されたことで、構成パラメーターの更新、バッファー・プールのサイズ変更、空きメモリー・リソースの動的分散などの処理を継続的に実行できるようになり、DB2 サーバーの構成タスクが大幅に軽減されました。この新機能は保守時間の短縮にも貢献します。データベース管理者 (DBA) がデータ・サーバーのワークロードを監視したり、ワークロードの需要変化に応じてメモリー・ヒープを手動変更したりする必要がなくなるからです。

大規模データベースのストレージ・コスト削減に役立つ行圧縮機能も新たに提供されました。さらに DB2 9 は、XML データのサポートと包括的な XML 照会機能を提供する pureXML™ テクノロジーに加えて、以下のような充実した機能を搭載しています。

自動ストレージ・データベース : テーブル・スペースを作成し、そのコンテナーとスペース管理特性を DB2 製品で全面的に決定できます。 DB2 コネクション・コンセントレーター : トランザクション時間の極めて短い着信接続を大量かつ効率的に処理できます。そのため、他のデータベース管理システムでよく見られる、「クライアント接続対サーバー・プロセス」という 1 対 1 マッピングが不要になります。このアーキテクチャーにより、ワークロードの増加に対処するためのコスト、つまりメモリーや CPU の追加に要するコスト全体が抑えられます。この機能は DB2 9 Enterprise Server Edition に付属しているほか、DB2 Workgroup Server Edition および DB2 Express の付加価値機能として入手できます。

参考資料 2

DB2 9 製品ファミリー(US)

システムの構成

この研究で使用するハードウェアは、ドライバー・マシン 1 台、Web サーバー 5 台、独立したデータ・サーバー 1 台で構成されています。ドライバー・マシンは、オンライン DVD ショップにアクセスする Web ユーザーのエミュレーションを行い、HTTP 要求を生成します。これらの HTTP 要求が、DVD ショップのアプリケーション・ロジックが含まれた Web サーバーに送られます。使用する Web サーバーはそれぞれ 4 GB のメモリーを装着した 2 ソケットのデュアル・コア・インテル® (資料3) Xeon® 5150 プロセッサー搭載マシンであり、Red Hat Enterprise Linux® Server 4 と最新の Zend Core for IBM 1.5.0 を実行しています。実験では、オンライン DVD ショップを同時に利用するユーザー数が増加するにつれて、Web サーバーを最大 5 台まで追加していきます。各 Web サーバーは Web ブラウザーからの HTTP 要求を処理し、2,000 の同時 Apache 接続を維持します。このように Apache 処理の数が多いことから、1 台の Web サーバー上で利用可能な 4 GB のメモリーはすべて消費されます。Web サーバーからデータ・サーバーへの接続は永続的に維持されるため、トランザクションの完了後も接続ハンドルを残し、その接続ハンドルを後続の着信トランザクションに再使用することが可能です。また、どの実験においても思考時間(注1) は 160 秒とします。

データベース・サーバーは 4 GB のメモリーを装着した 4 ソケットのデュアル・コア・インテル Xeon 7040 システムであり、Novell SUSE Linux Enterprise Server 9 サービス・パック 3 と DB2 9 FixPak 1 (注2) を実行しています。1 台の IBM N3050 ストレージ・サーバー (資料4) がファイバー・チャネル・プロトコル (FCP) を介してデータ・サーバーに接続されています。ストレージ・サーバーには 28 台の 133 GB 10K RPM ディスクが接続されています。アグリゲートを 1 つ定義し、その上にデータベース・テーブルとログを処理する FlexVol を作成します。使用したシステム構成を図 1 に示します。

注1 : 思考時間とは、各ユーザーの Web 要求の間隔です。
注2 : DB2 9 FixPak 1 の一般公開予定日は 2006 年 11 月 30 日です。

図1:10,000 件の PHP 要求を処理するシステム・アーキテクチャー
図1

参考資料 3

インテル製品およびサービス

参考資料 4

ネットワーク・アプライアンス製品およびサービス

データベースとワークロードの説明

このホワイト・ペーパーでの実証に使用したワークロードは、オンライン・トランザクション処理 (OLTP) 環境をシミュレートしたものです。ワークロードとデータベース・スクリプトはここから得ることができます。ドライバーは、「ユーザーがログインし、単純な検索照会を行って、入手可能製品のカタログを閲覧する」という行動をシミュレートします。既存の顧客にはオンライン購入のトランザクション履歴が表示され、新規のユーザーは顧客アカウントの作成登録を行えます。ユーザーは購入したい商品を選択し、支払いに進むか、あるいは商品の閲覧を続けます。商品は 1 分ごとに補充し、数量を維持します。図 2 は各トランザクションの平均的な実行割合を示しています。

図2:ワークロードのトランザクションの割合
図2
図2

顧客数 2,000 万、発注件数 100 万、商品数 10 万の 20 GB データベースを作成します。このデータベースは自動ストレージを使って作成され、データベースで使用されるすべてのスペースを DB2 9 で定義・管理できるものとします。データベースのメモリー・ヒープのチューニングは事前定義されるのではなく、DB2 9 で STMM 機能を呼び出すと設定されます。

比較的短時間の接続が多数発生するインターネット Web アプリケーションの場合、DB2 コネクション・コンセントレーターを使用すれば、数万のクライアント接続がデータベースによって効率的に処理されるようになります。また、少ない DB2 エージェントで済むように複数の接続を構成できるため、データ・サーバーでのメモリー使用量が抑えられます。コネクション・コンセントレーター機能は、データベース構成の MAX_CONNECTIONS 設定を定義すれば有効になります。今回の実験では、MAX_CONNECTIONS は 10,000 に、MAX_AGENTS は 500 に設定しました。つまり、DB2 データベースは合計 10,000 までの同時接続を許容し、最大 500 のバックエンド・エージェントがそれらの接続にサービスを提供することになります。

結果

実験は 5 段階で行い、ステージごとに、オンライン DVD ショップに同時アクセスする Web ユーザーの数を 2000 人ずつ増やしました。これらの要求を処理するために新たな Web サーバーを追加しましたが、DB2 データ・サーバーの手動チューニングは行いませんでした(注3)。新たな Web サーバーを追加するたびに、データベースのスループット性能とメモリー使用状況を DB2 サーバーに記録しました。

スループットは「DVD ショップ・アプリケーションによって 1 分間に処理された発注件数」として測定しました。図 3 は、ユーザー数が 2000 から 10,000 へ拡大したことに比例してデータ・サーバーのスループットが増加したことを示しています。アクティブ接続が 10,000 になると DB2 サーバーの全体的 CPU 使用率は約 80% となり、スループットの値はユーザー数 2000 人のときと比べて約 5 倍になりました。これは、データベースへの接続数が増えるにつれてスループットが増加したということを示唆しています。

データベースへの接続数の増加と、それに伴うデータ・サーバーでのメモリー使用状況について、図 4 に示します。このグラフからは、データ・サーバーへの接続数が 2000 増加するごとにメモリー消費量は約 300 MB 増えるということが読み取れます。増加量が低く抑えられているのは、DB2 コネクション・コンセントレーター機能によるものです。この機能は、わずか 500 の DB2 のバックエンド・エージェントを使って、アクティブ接続のワークロードを調整しています。接続数 10,000 の時点でも、システムが使用するメモリー総量は 3.0 GB をわずかに切る程度に過ぎず、コネクション・コンセントレーターが必要とするメモリーも 1.5 GB 程度にとどまります。データベース・システムに対するアクティブ接続数が 10,000 で、クライアントとデータ・サーバー・プロセスを「1 対 1」でマッピングしている場合と比べると、これははるかに低い値です。

注3 :このホワイト・ペーパーはデータベース層でのリソース使用の最適化に論点を絞っていますが、ここで取り上げた以外の手法も使用して、Web 層 (Web サーバーおよび PHP 環境) での最適化をさらに進めることも可能です。

図3:アクティブ接続数の増加に伴う、データベース・サーバーの CPU 使用状況とスループット
図3
図3
図4:アクティブ接続数の増加に伴う、データベース・サーバーのメモリー要件
図4
図4

まとめ

このホワイト・ペーパーでは、「Zend Core for IBM と IBM DB2 9 を使用して PHP ソリューションを導入すれば、システムの CPU やメモリー・リソースにほとんど負担をかけることなく数万のデータベース接続を処理できる」ということを実証しました。大規模な PHP デプロイメント環境では、数百台の PHP サーバーが存在することも珍しくありません。通常、サーバーは 1 台あたり数百の Apache ワーカー・プロセスを実行し、それぞれが永続的なデータベース接続を保持しています。したがって、数千から数万の同時接続を処理できるように、データベースの規模を拡大する必要があります。今回のテストでは、DB2 データ・サーバーに対して最大 10,000 のアクティブ接続を行いました。そして、「DB2 コネクション・コンセントレーターを使用すれば、膨大な数の接続を処理できるレベルにまでシステムを容易に拡張できる」ということを確認しました。DB2 9 が提供する強力な機能、コネクション・コンセントレーターがあれば、CPU やメモリーを増設することなくシステム規模を拡大し、空いているシステム・リソースを効率的に活用できます。これは他のデータベース管理システムには真似のできない機能です。DB2 9 には、データ・サーバーの保守時間の短縮に役立つ独自のオートノミック・フィーチャーがほかにも備わっています。そうした独自の DB2 機能は、Zend Core との連携と同様に、「強力で使いやすいソフトウェアを提供することによってお客様の経費節減と効率向上に貢献する」という IBM のコミットメントを表しています。

謝辞

この研究の実施にあたって Xeon 5150 システムおよび Xeon 7040 システムをご提供いただいたインテル社に心から感謝申し上げます。また、実験用の N3050 ストレージ・サーバーをご提供いただいたネットワーク・アプライアンス社にも深く感謝いたします。最後になりましたが、この記事の執筆に際して Berni Schiefer、Grant Hutchison、Andi Gutmans、Cal Evans の各氏より貴重なご意見・ご高閲をいただいたことに御礼申し上げます。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=320561
ArticleTitle=パフォーマンス事例研究
publish-date=10112006