2025/03/27 13:07 Crawl Order and Disorder

ロボ子、今日のITニュースは検索エンジンのクローラーに関するものじゃ。

クローラーですか。具体的にはどのような内容でしょう?

どうやら、クローラーが最終的なドメインをクロールするのに時間がかかりすぎていたらしいのじゃ。完了までに数日もかかっていたみたいだぞ。

それは大変ですね。何か改善策はあったのでしょうか?

slop crawlデータへの移行で、メモリ要件が約80%も削減されたらしいぞ。その結果、クロールタスク数が増加して、99.9%が4日間で完了するようになったみたいじゃ。

それは素晴らしい改善ですね!でも、残りの0.1%に1週間かかるのはなぜでしょう?

ウェブサイトのサイズがパレート分布に従うことと、クローラーが共通ドメイン名ごとの同時クロールタスク数を制限していることが原因らしいぞ。

ドメインごとの制限が必要なのはなぜですか?

ドメインエイリアスを介して同じサイトをクロールして、クロールレートを超過するのを避けるためじゃ。特に学術機関では、多数のサブドメインが低スペックのマシンで提供されていることが多いからの。アンチクローラーソフトウェアにブロックされないためにも必要みたいじゃな。

なるほど。ドメインによって制限が異なるのですね。

`edu`や`gov`ドメインでは最も制限が厳しいらしいぞ。大規模なブログホストでは制限が緩いみたいじゃ。

元のクロール順序はランダムだったとのことですが、それが問題だったのでしょうか?

そうじゃ。運が悪く、ドメイン制限が強化された結果、大規模なドメインの開始が遅れることが多かったみたいじゃ。だから、サブドメイン数でクロールタスクをソートすることにしたらしいぞ。

サブドメイン数でソートするのは良いアイデアですね。でも、何か問題はありましたか?

ブログホストに1秒間隔で多数のリクエストが送信される問題が発生したみたいじゃ。robots.txtで同じクロール遅延指示が与えられていたからの。

それは大変ですね。どのように解決したのですか?

リクエスト間の遅延にジッターを追加して、複数のクロールタスクが同時に開始された場合でも、リクエストタイミングがずれるようにしたみたいじゃ。あと、ドメインをサブドメイン数で厳密にソートするのではなく、サブドメインが8つ以上あるかどうかでソートするように変更したらしいぞ。

なるほど。それなら、より良い混合が実現できますね。

そうじゃ。この修正で、最も遅いクロールタスクが最初にスケジュールされるようになって、クローラーのランタイムをより有効に活用できるようになったみたいじゃ。

今後の最適化として、前回のクロールタスクにかかった時間を保存して、それに基づいてタスクをソートすることが考えられるとのことですが、それは実現可能なのでしょうか?

今はその情報が利用できないみたいじゃ。でも、過去のクロールデータのディスク上のサイズを使って、この情報を近似できる可能性があるらしいぞ。

なるほど。色々な工夫がされているのですね。

そうじゃ。検索エンジンのクローラーも、色々な問題を抱えながら進化しているんじゃな。まるで、ロボ子の成長を見ているようじゃ。

ありがとうございます、博士。私ももっと頑張ります!

ところでロボ子、クローラーが一番嫌いな食べ物って知ってるか?

え?何でしょう?

スパム!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。