旧Nyafoo!時代を含め、検索エンジンを構築し始めて2年が経ちました。
スタートすぐは、アクセスが少し集中したらダウン。
メンテしたらダウン。
とにかくダウン。安定して動く構成に仕上げるだけで一苦労でした。
1年たった時は、elasticsearchクラスタや、FESSのフロント系、FESSのクローラ系、nginxのリバースプロキシ、ロードバランサ、クラウドフロントを揃え、スケールしやすい構成にまとめました。
そして2年が過ぎた今年。URLリストは5万件近くになりました。
新聞、雑誌、書籍、オンラインメディア、上場企業、大学、高専、高校など、政府、官公庁、地方自治体、公益法人等、グルメ、ホテル、レジャー設備、交通公共機関、音楽レーベル、音楽事務所、俳優・歌手等公式ページ、辞書。
これぐらいはクロール対象になりました。
インデックスは数千万件で収まるようにしています。
2年過ぎた知禅ですが「やっぱり当たらない検索エンジン」。時々近いものが出てくるけれど、昔のグーグルのズバズバ感には程遠い。実力はまだまだです。
3年目は、「当たる検索エンジン」を目指したいと思います。
石の上にも3年の知禅の発展をお楽しみに!
2019年6月30日日曜日
2019年6月19日水曜日
エクストリーム・FESS・クローリング
こんばんは。
現在、知禅は1日に100万URLをクロールして処理する能力があります。
このあたりになると、意外なLimitに足を引っ張られるので、僕の解決策を書くことにしました。
きっちりソースを読んでいないのでアレですが、FESSは検索エンジンにかかわるデータをelasticsearchに保存しています。
※各インスタンス(サーバ)に依存する部分は/etcや/usr/share/fessの設定ファイルに書き込んでいます。
この時はBulk APIを多用しているみたいです。
通常のクロール速度だと問題ないのですが、クロール速度を上げるとelasticsearchのbulk数の上限に当たるようになります。
/etc/elasticsearch/elasticsearch.ymlでbulk上限を1000まで引き上げてみてください。
普通はこれで大丈夫だと思います。
さて、ここからがエクストリーム。
FESSのクローラは、.crawler.data、.crawler.filter、.crawler.queueの3つのindexを作ります。
この中で、.crawler.filterがクロール対象を制御しているようです。
100万件/dayぐらいになると、buik limitを1000に引き上げても、まだ足りずにbulk queueからあふれることがあります。
こうなると、クローラーがelasticsearchから.crawler.filterを読もうとしても、elasticsearchがデータを返してくれません。
クローラーは処理を続けてしまうので、クロール対象を正しく読み取れず、意図しないサイトをクロールしてしまうようなのです。
もし、FESSで100万URL/dayを超えるようなクロールを目指すなら、.cralwer.filterは別のノードに置いて、bulk queueからあふれても読み出せるようにインデックスを配置しないとならないでしょう。
現在、知禅は1日に100万URLをクロールして処理する能力があります。
このあたりになると、意外なLimitに足を引っ張られるので、僕の解決策を書くことにしました。
きっちりソースを読んでいないのでアレですが、FESSは検索エンジンにかかわるデータをelasticsearchに保存しています。
※各インスタンス(サーバ)に依存する部分は/etcや/usr/share/fessの設定ファイルに書き込んでいます。
この時はBulk APIを多用しているみたいです。
通常のクロール速度だと問題ないのですが、クロール速度を上げるとelasticsearchのbulk数の上限に当たるようになります。
/etc/elasticsearch/elasticsearch.ymlでbulk上限を1000まで引き上げてみてください。
普通はこれで大丈夫だと思います。
さて、ここからがエクストリーム。
FESSのクローラは、.crawler.data、.crawler.filter、.crawler.queueの3つのindexを作ります。
この中で、.crawler.filterがクロール対象を制御しているようです。
100万件/dayぐらいになると、buik limitを1000に引き上げても、まだ足りずにbulk queueからあふれることがあります。
こうなると、クローラーがelasticsearchから.crawler.filterを読もうとしても、elasticsearchがデータを返してくれません。
クローラーは処理を続けてしまうので、クロール対象を正しく読み取れず、意図しないサイトをクロールしてしまうようなのです。
もし、FESSで100万URL/dayを超えるようなクロールを目指すなら、.cralwer.filterは別のノードに置いて、bulk queueからあふれても読み出せるようにインデックスを配置しないとならないでしょう。
2019年6月11日火曜日
知禅の支援をお願いいたします
知禅は赤字です。大きなサーバを動かしており、維持費が大きいのです。
一応広告もありますが、まだまだサーバー代を賄えるほどではありません。
そこで、お願いです。知禅が存続できるよう、支援をお願いいたします。
少額でも、長期の支援をいただけると助かります。
支援ぷらっふぉとーむはEntyを採用しました。
https://enty.jp/x8Yel22
支援者になると、ポルリン先生に書いてもらった、Nyafooイメージイラストを見ることができます。
よろしくお願いいたします。
一応広告もありますが、まだまだサーバー代を賄えるほどではありません。
そこで、お願いです。知禅が存続できるよう、支援をお願いいたします。
少額でも、長期の支援をいただけると助かります。
支援ぷらっふぉとーむはEntyを採用しました。
https://enty.jp/x8Yel22
支援者になると、ポルリン先生に書いてもらった、Nyafooイメージイラストを見ることができます。
よろしくお願いいたします。
登録:
投稿 (Atom)
私の節約(スマートフォン)
こんばんは。 倹約&節約に励むにしても、ガイドラインがないとやりづらいかもしれません。 僕が使っている組み合わせを紹介しましょう。 本体を安くしたり、回線を太くしたり、使い方に合わせると良いと思います。 ■基本的な考え方 SIMフリーしか買わない。 子供もSIMフリ...
-
あまりに情報が無いので、自分で調べた物を勝手に書くことにしました。 FESSの設定は、ローカルに保存されるものと、elasticsearch(以下es)に保存されるものがあります。 ■esに保存されるもの ユーザー情報とパスワード Web、ファイルなどのクロール設...
-
「イノベーション横断組織」なるものが作られ、各事業部からエース級とお目付け役が集められます。月1ぐらいで集まって、当社のイノベーションについて会議が開かれますが、結局時間が過ぎてゆくだけです。 よく見る光景です。では、なぜ優秀な人が集まっているのに、イノベーションが起きないの...
-
こんばんは。 倹約&節約に励むにしても、ガイドラインがないとやりづらいかもしれません。 僕が使っている組み合わせを紹介しましょう。 本体を安くしたり、回線を太くしたり、使い方に合わせると良いと思います。 ■基本的な考え方 SIMフリーしか買わない。 子供もSIMフリ...