さて今回は「OSDL DBT-1」によるテストを実行するための、最終的な設定を行っていこう。この設定の内容は、あらかじめDBT-1のアーキテクチャをある程度理解しておかないとチンプンカンプンになってしまう。そのため、まずは大前提となるシステム構成を把握しておこう。DBT-1は、下図のような3層のシステム構成を想定している。
DBT-1が想定している3層のシステム構成 |
DB(データベース)サーバについては、今回の場合はPostgreSQLである。アプリケーションサーバは、オンラインショップのフロントエンドとなるWebアプリケーションの稼働するサーバと考えればよいだろう。もうひとつの「ドライバ」は、何かのデバイスドライバとかODBCドライバだと思った読者もいるだろうが、そうではない。これは顧客の動きをエミュレートするためのプログラムを指すものと考えられる。これを念頭に、data_collect/pgsqlディレクトリ下にあるrun.configファイルの各パラメータを設定していこう。
まず、データベースサーバに関する設定を行う。「items」パラメータには、データ生成のときと同様、オンラインショップの商品数を指定しよう。datagenに-iオプションで与えた値と同じ値を設定すればよい。次に「dcustomers」パラメータを設定する。マニュアルによると、このパラメータにはdatagenの際に-uで指定した値に2880を掛けた値を設定するようだ。あとは、データベースのホスト名(dbhost)、データベース名(bdbname)、データベース接続に使用するユーザ名(username)とパスワード(password)を、それぞれ設定する。
# database config
items:1000
gcustomers:288000
dbhost:localhost
bdbname:DBT1
username:pgsql
password:pgsql
続けて、アプリケーションサーバの設定を行う。まずはキャッシュシミュレーション関係の設定だ。「cache」パラメータを0に設定すると、一切キャッシュを使わない想定でテストが行われる。1に設定すると、Webキャッシュが利用されることを想定したテストになる。つまり、毎回データベースへの問い合わせを実行しないので、より良好な結果が出やすくなるわけだ。具体的には、販売する書籍の「タイトル」と「著者名」が同一の結果に関しては、Webキャッシュからレスポンスを返すようになるらしい。
# cache config
cache:1
xcache_host:localhost
lcache_port:9999
mconnection:10
アプリケーションサーバ本体の設定も行おう。ここではアプリケーションサーバのホスト名、ドライバとの接続に使用するポート、アプリケーションサーバ-DBサーバ間の接続数などを設定する。
# appServer config
server_host0:localhost
nserver_port0:9992
q_size0:100
a_size0:100
rconnection0:20
なおDBT-1では、これら各パラメータ名の末尾の「0」を1、2、3…とインクリメントして複数設定することで、アプリケーションサーバが並列で稼働する場合のシミュレーションも行える。
あとは、ドライバの設定を行う。
# dbdriver config
ydriver_host0:localhost
vrate0:60
eus0:100
zduration0:900
think_time0:1.6
jdriver_server_host0:localhost
kdriver_server_port0:9992
パラメータはそれぞれ、ドライバの稼働するホスト名(ydriver_host)、ドライバでエミュレートするユーザ数(eus)、ワークロードを実行する秒数(zduration)、顧客が「考え中」で操作を待つ平均秒数(think_time)、アプリケーションサーバと接続するためのホスト名(jdriver_server_host)とポート(kdriver_server_port)だ。ドライバもアプリケーションサーバと同様、末尾の数字をインクリメントして増やすことができる。
最後に、結果の出力に関する設定は次のようになる。
out_dir: /tmp
db_param:-c tcpip_socket=on
redirect_tmp:1
redirect_xlog:1
out_dirにはテスト結果の出力先を指定する。db_param、redirect_tmp、redirect_xlogは、それぞれbuild_db.shを実行した際と同じ値を設定しよう。
さて、以上で設定は完了。実は筆者もまだ実際のテストを実行してみていないので、これでちゃんと動くかどうかは次回のお楽しみにしよう。おそらく、何かほかにも調整すべきことが残っているような気がするが、次回はそれも含めて検証結果の報告を行う。