Webの負荷テストに使えるフリーソフトウェア:Programing Bible(2/2 ページ)
インターネット上では、Webアプリケーションやサーバそのものが高負荷となることは可能な限り回避する必要がある。本稿では、動的Webサイトの専門家がWebの負荷テストで使えるソフトウェアを幾つか紹介していく。
Siege
ほとんどすべての設定をコマンドライン引数で行えるという点で、Siegeはhttperfに似ている。しかし、Siegeではマルチスレッド処理によって要求を送信するほか、低レベルのオプションがhttperfよりも少なく、URLのリストを対象としたテストを実施できる。また、各オプションに分かりやすい名前がついているので、httperfより使いやすい。
デフォルトのパラメータ設定でSiegeを実行するには、単純に次のようにする。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ただしこれでは、リストにした複数のURLを対象として、実環境のユーザーが引き起こすような不確定性の高い状況でのテストが可能なSiegeの特長を生かしきれない。Siegeの作者は、URLの収集用にSproxyという支援ツールを提供している。このツールは、インストール後に次の形で実行する。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
すると、実行したターミナルの画面に、収集されたすべてのURLが表示されるとともに、それらのURLがurls.txtというファイルに書き込まれる。
ブラウザの設定でHTTPプロキシを「localhost:9001」にした上で、サイトの閲覧を開始しよう。すると、Siegeで用いるURLの情報がSproxyによって記録される。
テスト用のURLが集まったら、次のようにして、テストの実行に移る。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
「--internet」引数を指定すると、Siegeはurls.txt内のURLを(多くのインターネット利用者と同じように)ランダムに使用する。
Tsung
Tsungは、URLが列挙されたファイルを用いるところはSiegeに似ているが、ユーザーエージェントのランダムな切り替え、疑似的なセッションの生成、動的なデータのフィードバックなど、より高度な機能を備えている。また、Erlangのグリーンスレッド(Green Threads)の利用により、パフォーマンス的にも優れている。
しかし、Tsungの利用は面倒だ。Siegeやcurl-loader、httperfと違い、コマンドラインからは実行できない。「~/.tsung/tsung.xml」というシナリオファイルを手作業で、あるいはレコーディングモードを使って作成する必要がある。このモードはSiegeのSproxyに似ており、次の手順で実行する。
- 「tsung recorder」でTsungによるプロキシの記録を開始し、プロキシサーバを「localhost:8090」にして対象のURLを開く。
- 「~/.tsung」に新しく生成されたセッション記録を開き、シナリオの詳細事項を編集する。
- 編集結果を「~/.tsung/tsung.xml」として保存する。
- 「tsung start」でテストを開始する。
一番難しいのは、手順2の設定ファイルの作成だ。Tsungの高度な機能を利用するには、どうしても設定ファイルの書式の理解が必要になる。
なお、TsungではPostgreSQLやJabberのサーバに負荷をかけることもできる。
まとめ
ここで紹介したツールにはそれぞれ長所と短所がある。すべてに共通しているのは、詳しいドキュメントがあり、容易にインストールできて、動作が安定していることだ。
各自の環境に合ったツールを見つけるには、次の順で試すとよいだろう。まずはシンプルなSiegeを使ってみて、そのパフォーマンスと機能に満足できるか確かめる。それでだめなら、もう少し機能が豊富で高速なhttperfを試してみる。もっと複雑なシナリオ設定が必要であれば、最高の機能とパフォーマンスを備えたcurl-loaderやTsungに換えてみる。ただ、特にTsungの方は慣れるのに時間が掛かるだろう。
同じ用途のアプリケーションはほかにも数多くあるが、GUIベースのものはApache JMeterしかない。JMeterは機能面でも充実しており、コンテンツの前処理や後処理といった独自の機能も見られる。GUIアプリケーションがよければ、こちらを試すとよい。
Leslie P. Polzerは、動的Webサイトの開発を専門としてフリーランスで活動。
プログラミングの最新動向を知りたければ「Programing Bible」にお進みください。あなたの仕事を楽にするツールを多く紹介しています。
関連記事
- さまざまな作業に対応するオープンソースのテストツール群
テストは開発プロセスにおいて重要な役割を果たす。ここでは、プロプライエタリな製品に比肩するだけの実力を持ったオープンソースのテストツールを紹介する。 - 開発者のバグ潰しに役立つMantis
Mantisは、ソフトウェアにはつきもののバグが修正されるまで対処作業の進捗を確認するという完全なワークフローソリューションとして機能する。 - petardfsでアプリケーションをテストする
petardファイルシステムは、エラーだけを生成するように設計されたファイルシステムである。システムテストと単体テストを行うのに役立つ。 - zzufを使ったファズテスト
ファズテストは、ITセキュリティにおいてかなり前から非常に大きな関心事になっていた。だが、zzufという小さいながらも素晴らしいプログラムのおかげで、今では迅速かつ容易に自前でファズテストを実行できるようになっている。 - テストファーストによるソフトウェア開発の衝撃(前編)
- テストファーストによるソフトウェア開発の衝撃(後編)
- コード開発プロジェクトにおけるソース管理システムの正しい利用法
ソース管理システムの適切な使いこなしはプログラマーにとって重要なスキルの1つだ。本稿では、ソース管理システムの初心者が陥りやすい落とし穴および、それらを回避するためのベストプラクティスを具体例とともに解説する。 - WindowsでSubversionを使う:TortoiseSVNでバージョン管理
GUIでリポジトリにアクセスできるTortoiseSVNを用いれば、WindowsユーザーでもSubversionによるバージョン管理が簡単に行える。本稿では、TortoiseSVNの導入から基本的な使用方法までを解説する。 - バグ管理システム「Mantis」
Tracなどの著名なバグ管理システムが国内でも人気だが、Mantisもこれらと同様の機能を期待通りに完備しており、しかも無駄がない。一般的なユーザーでも利用可能なバグ管理ソフトウェアを探している開発者には最適といえる。 - 開発者のバグ潰しに役立つMantis
Mantisは、ソフトウェアにはつきもののバグが修正されるまで対処作業の進捗を確認するという完全なワークフローソリューションとして機能する。 - さまざまな作業に対応するオープンソースのテストツール群
テストは開発プロセスにおいて重要な役割を果たす。ここでは、プロプライエタリな製品に比肩するだけの実力を持ったオープンソースのテストツールを紹介する。 - Inquisitorでハードウェアをテストする
Inquisitorはオープンソースの主だったベンチマークツールを動かすためのラッパースクリプトで、何千台ものコンピュータを同時にストレステストすることもできる。ハードウェアの開発などを行う際には覚えておきたいツールの1つだ。 - ソフトウェア開発者必見のWorkbench Linuxディストリビューション
Xubuntuをベースにして作られているWorkbenchは、開発者にとって有用なユーティリティとアプリケーションを豊富に用意している。特にソフトウェア開発に興味のあるユーザーの場合、その有用性はいちじるしく高いものとなる。 - AppChecker――Linux Foundationからリリースされた新世代の開発支援ツール
Linux関連の開発作業で最も負担なのは、さまざまなディストリビューションの対応製品を際限なく準備しなくてはならない点である。この部分にメスを入れた開発支援ツール「AppChecker」がLinux Foundationからリリースされた。 - petardfsでアプリケーションをテストする
petardファイルシステムは、エラーだけを生成するように設計されたファイルシステムである。システムテストと単体テストを行うのに役立つ。
Copyright © 2010 OSDN Corporation, All Rights Reserved.