Subversionがくそ重い!
現在、Redhat Enterprise Linux4なサーバにデイリービルドする環境を構築中。毎日リポジトリから最新のソースをチェックアウトしてきて、ビルドして、いろんな検証かけて、結果を報告するまでを全自動でやろう、という代物だ。ところが、チェックアウトに使うSubversionの動きが、何故か異様にのろい。
動くことは動くし、svn statusやsvn revertといった操作は問題無いのだが、他のコマンド、つまりリポジトリにアクセスする操作になると、実行直後にどうしても20秒ぐらいフリーズする(そのように見える)。その硬直が解けて、通信を開始してからは実に速い。
いろいろ調べた結果、どうもSubversionがリポジトリへのアクセスに利用しているHTTP/WebDAVライブラリ『Neon』が怪しい。試しに、同じくNeonを利用しているWebDAVクライアント『cadaver』を使ってみたが、やっぱり同じぐらいの硬直時間がある。逆に、Neonに非依存なツール、たとえばwgetあたりでファイルを取ってくるぶんにはご機嫌な速度でちゃんと動く。
ならばNeonをバージョンアップさせてみるか、とトライ。しかし、バージョンアップしたNeonを使うためには、Subversion側もビルドし直さなければならず、この依存性を解決するために膨大な数のライブラリを探してきてつっこまねばならないし、大半はsrc.rpmからビルドするところから始めなければならないときて、イヤになってやめた(汗
ダメもとでNeonをいじらずSubversionのバージョンのみ上げたりもしたが、やっぱりダメ。
まぁ、一日に数回動くだけだから、問題ないとは思うが・・・それにしても、謎だ。フリーズしているように見える間、こいつは何をやっているんだろう?CPU使用率も低いし、ネットワークは使っていない。それに、ほぼ同じライブラリ構成になっている、我がDebianマシンで使う分にはまったく問題無く動くのに。わけがわからん。
Neonを使うから遅くなるのだから、http://ではなくsvn://でアクセスできるようsvnserveを立てれば問題は解決すると思われる。svn://はSubversion独自のプロトコルなので余所のライブラリに依存していない。しかし、もう開発のスタートも間近なのに、いまさら設定変えるのもねぇ。なにより、俺が慣れていない。
もうちょっとねばってみるつもり。