« 僕が思いつくアイデアは誰かが実現してくれるものだ | Main | 気付いたら青葉が眩しい »

2007年04月14日

Mac OS X 10.4 の WebDAV はおかしい

Mac OS X 10.4.x (Tiger) の WebDAV のファイルシステムに大量にアクセスすると新規の TCP 接続ができなくなるようだ。

2007年6月3日追記
原因が判明しました。詳しくは「僕は見ていた : Intego NetBarrier X4 が原因で WebDAV アクセスに障害」を見てください。

Mac OS X では標準で WebDAV サーバに接続してそのフォルダをマウントする機能があるのは Mac ユーザならご存知だと思う。特にアップル .Mac のユーザなら iDisk でお馴染みだ。このブログも iDisk の所定の場所にファイルをアップロードすることで公開している。

何も WebDAV が使用されるのは iDisk ばかりではない。任意の WebDAV サーバに接続できる。だから我が家では LAN サーバに WebDAV サーバ機能を持たせて共有ファイルをそこに置いている。最も良く使っているのが iPhoto のフォトライブラリだ。iPhoto には元々共有機能があるが、僕と妻の Mac でそれを使うということはそれぞれが別なフォトライブラリを持っていて、その一部(または全体)を相手に見せてあげるということになる。でもそうではなくて元々フォトライブラリを共有したい。だからフォトライブラリごと WebDAV サーバに置いてそれぞれが必要に応じてそれをマウントして iPhoto で閲覧したり編集したりしている。

まずこのブログの公開の仕方なのだが、使用している Thingamablog は FTP サーバや SFTP サーバだけではなくローカルファイルに公開することもできる。Mac OS X では WebDAV フォルダをマウントすることでローカルのボリュームと同じように操作できるから、Thingamablog にはローカルへの公開と見せかけて iDisk に公開するということができる。恐らく Thingamablog + .Mac の素直な使い方はこれだろう。

しかし僕はこの方法をとっていない。なぜならそれだとプレビューができないからだ。いや、Thingamablog の普通の使い方ではプレビューできている。というのはエントリの編集画面がリッチテキスト編集画面なのだから。HTML を直接書けもする。僕はリッチテキスト編集画面が作るマークアップが気に入らないし、細かいところを制御できないから XHTML を直接書いている。でも Thingamablog は XHTML ではなく HTML をこの機能の標準にしている。だからこの XHTML と HTML の違いのせいでプレビューの表示は少し変なのだ。それに表示に対応していないタグもあるし。

どうやっているかというのは「Thingamablog メモ : iBlog のようにブラウザでプレビュー」に詳しく書いた。要するに WebDAV ではなく本当のローカルに書き出してから iDisk とその書き出したところを rsync で同期させるという方法でやっている。

ところがだ。ブログにエントリして公開した後、iPhoto でたくさんの写真を見たりした後、WebDAV フォルダをアンマウント(切断)できないことがよくあるのだ。アンマウントできないだけならまだいい。ファイルシステムの応答待ちに入ってしまうためにシステム全体が処理をほとんど中断してしまう。一晩ほっといても色々なアプリの終了すらできない。更に驚いたことに新たな TCP 接続を確立できないのだ。既に確立している TCP 接続はそのまま通るが新しいものは全然駄目。

この新たな TCP 接続が作れないことから Tiger の WebDAV ファイルシステムには何か欠陥があって、ファイルハンドルのような資源がリークしていてそれを使い果たしてしまうのではないかと推測している。

最初は iDisk との rsync で発生していたのでまた .Mac の機能に何か欠陥があるのかと思っていたのだが LAN 上の iPhoto ライブラリでも発生したことから、Tiger の WebDAV の扱い一般に問題があるのだと思う。

この現象が発生するとその Mac OS X はどうにもこうにも操作できない状態になってしまう。だから強制再起動をするしかない。ファイルハンドルのような資源のリークが原因だとしたら、このような WebDAV への大量アクセスを行った後は OS を再起動してやればよいだろう。そうすれば浪費した資源がリセットされるからまた普通に使えると思う。

last generated
2008-08-08
page view