開発じたばた日誌

前へ●●●
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


ホワイトボードサーバー 編

 ちかごろ意欲のわくネタがなく、むなしく時間を過ごす日々がすぎる。

 そこでホワイトボードのツリーを作った頃を思い出してみようと思う。 このネタは突然ひらめいた。なんてバカだったんだろう、ツリーを今まで思いつかないなんて。 ホワイトボードにはリストがあり、接続する人数が増えると自分に関係ない人が増えて使いづらくなる。 これは当初からわかっていたが解決できない問題であった。

 そうだ組織ごとにツリーにすればいいんだ!そうすれば自分と関係ある組織の人だけをみることができる。 これは大きな変更でかなり意欲のわく仕事だ。 画面構成はエクスプローラと同じでいい。問題はどのようにデータ設定させるかだ。

 このときファイルのパス名が頭に浮かぶ。エクスプローラと同じ画面なら、接続ユーザーというのはファイルと同じだ。 つまり組織を\で区切って、ファイルのフルパス名をユーザーの名前にしてやればよいことになる。

 内部の通信方式はなにもかえなくてよい。単にユーザーの名前が長くなると考えればいいだけだからだ。 受信したデータをツリーのようにみせてやるのは受信後の仕事であり、通信とは全く関係ない。

 この仕事はこれでかなりうまくいった。さてこのようになると接続ユーザーが非常に多くなるかもしれない。 そうなるとサーバーのパフォーマンスが気になる。 どんな使われ方をしているのか把握していないのにのんきなものである。

 とりあえず負荷をかけるため、クライアントに特殊な動作モードをこっそりつける。 CTRL+SHIFTキーを押しながら右ボタンをダブルクリックするとクライアントは自分の所在を1秒ごとに変更する。 これでクライアントを多数起動しておくと負荷試験ができる。

 その結果、たった10クライアント程度でもサーバーには荷が重いことがわかった。 そんなばかな。たったのこれだけで。どこかに足を引っ張る処理があるに違いない。

 調査を進めると、とんでもない馬鹿なことをしていることがわかった。 クライアントからの接続要求があるとそのクライアント用のスレッドを起動し、Sleep関数で0.1秒お休みしていた。 0.1秒!これは人間にはほんの一瞬でもコンピュータにはとても長い時間だ。 Sleep関数をはずすとパフォーマンスは劇的に改善された。 あまたのクライアントの要求そつなくこなし、平然とした顔をしているなんて気分がいい。

 それにしてもちまたのWEBサーバーなどは1秒に何千ヒットだとか何万ヒットを処理するなんてすごいね。 いまのWBServerのやり方では全くのお手上げでしょう。どんな工夫がされているんでしょう?


2000.1.10