MapServerのベンチマーク結果

nishioka2004-10-15


ここギコさんのBlogで、MapServerでPostGISのパフォーマンスがどうも良くないを読み、僕もベンチマークを採ってみたくなり先日ちょっろと試してみました。その結果を簡単に報告します。

※ついでにベンチマーク結果をRの表示すべく勉強を始めたのですが、全然わからん...本買ってこよう...

条件

 ラインデータ1,508,242件を含んだ図形ファイルをPostGISと、Shapeファイルそれぞれ用意して、同一サーバ上に構築したMapServerから呼び出して図形を描画しました。
 MapServerが99矩形分を*1PostGISおよびShapeファイルから抜き出して描画する速度を別クライアントにインストールしたApache benchを用いて計測しました。

結果

 PostGISでは、空間インデックスの効果がテキメンに出ました。データすべてを描画するようなシーケンシャルスキャンをする大きな矩形ではとても遅く、逆に小さな矩形で少ないラインデータを取得する場合(800件/1,508,242件で0.2s)は高速に描画しています。投稿したサンプル画像では曲線を付加していませんが*2が、2次曲線を描くようなパフォーマンスになっています。逆にShapeファイルでは、取得するライン数に関係なくほぼ一定の描画性能*3がでました。

感想

 今回の実験では百万件のラインデータをもつ図形ファイルというPostGISが得意な領域での実験となってしまったので、当然の結果といえば当然かもしれません。。ただ、もっと小さいファイルを用いたとしたらMapServerはShapeファイルを直読する分だけShepeファイルにもメリットが出てきそうです、逆にPostGIでSは描画量が多い場合は遅くなることから、PostgreSQLがバックエンドで動作している分、メモリの使用やCPUの負荷オーバーヘッドが結構馬鹿にならないような気がしました。
 MapServerで高速化をはかるには各レイヤShapeFilePostGISを比べて、最適な組み合わせを調査した良いもしれません。

 ベンチマークをする前のテスト段階なのでちゃんと図っていないのですが、ときたまShapeファイルが超高速で動作するときがありました。キャッシュが効いているのかも。
 そもそもプレーンファイルってベンチマークって意味あるのかな?

免責

 しないとは思いますが、この結果を鵜呑みにしないで自分で試してね。
 我流なので、ベンチマーク方法に対するご指摘をお待ちしております。

*1:100のはずがloopのカウントを間違えていた模様...

*2:Rは勉強中...

*3:ベンチマーク中では、それほど差が出なかったのですが、準備段階でテストしているときに、驚くような高速度で動作するときがありました