2005年02月06日

キーワードチャンネル性能向上の取り組み

Heimdallrのプラグインにキーワードチャンネルというものがあるのですが、
これの性能を向上させる方法を考えてみます。

このプラグインは、ユーザから与えられたキーワードを元に、未来検索LivedoorBulkfeedsFeedbackの3つの検索サイトにアクセスして結果を取得するという処理を行っています。

現在は、これら3つのサイトに同時にアクセスし、全部のサイトから結果が返って来たら終了、という処理を行っています(以下、これをダウンロード処理とします)。

さて、こうした処理のどの性能を向上させるか、という話ですが、
ユーザからもっとも目立つのはメモリの量やCPU負荷ではなく、ダウンロード処理時間が長いことですので、最初にこの時間を短縮させるべきでしょう。

どうやって短縮させるかという話ですが、
まずその前にどうして時間がかかっているのか調べてみました。
その結果、RSS検索サイトが結果を返すまでに時間がかかる場合が時々あることと、エラーが発生したときに特に時間がかかることが分かりました。

検索サイトが結果を返すまでに時間がかかった場合、ダウンロード処理の時間が長くなってしまうのは仕方がないことですが、それでも多少は改善することができます。

例えばこんなのはどうでしょう。
いつも3つのサイトにアクセスするのではなく、最初のダウンロード処理では未来検索Livedoor、次はBulkfeeds、最後はFeedback、そして最初に戻る、というような感じで、ダウンロード処理1回につき1つの検索サイトにしかアクセスしないようにするのです。
その1回に時間がかかった場合は仕方が無いですが、ダウンロード処理時間の平均は改善すると思います。
最新の検索結果がすぐに得られないという欠点はありますが、数時間遅れるだけなので、よほど最新の情報が求められていない限り問題ではないと思います。

さらに、こんなのはどうでしょう。
エラーが発生した検索サイトややたらと遅いサイトは、1回パスするのです。これにより、時間がかかるアクセスの回数が減り、ダウンロード処理時間の平均はさらに改善するのではないかと思います。

他にも、If-Modified-Sinceヘッダを導入するとか、gzipエンコーディングを利用するとか、試せそうな事は色々ありますね。

さっそく手を動かして色々改善してみようと思います。

投稿者 MASATO : 2005年02月06日 00:44 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?