Mapion マピオンラボ セミナー/勉強会 第3回Solr勉強会 資料公開しました
岩澤です。
週末、海でキャッキャ、ウフフ遊んだらすっかり資料を公開することを忘れておりました。
遅くなってしまい、済みませんでした。
前回の最後に、1.4化実はまだでした!ってのがオチだったので、今回は本当にやりました!(`・ω・´) という報告です。
ユルめの内容ですが、Solr1.3時のマピオンの赤裸々な状況や、パフォーマンスを出すために手を入れたところなど、他でも役に立つ事もあるのではないかと思います。
第3回Solr勉強会 こんどこそ本当のSolr1.4化
View more presentations from Eiji Iwazawa.
前回同様テキストも貼ってみる。
第3回Solr勉強会 こんどこそ本当のSolr1.4化 - Presentation Transcript
1. こんどこそ 本当の Solr1.4 化 株式会社マピオン 岩澤英治 株式会社データ・コム・ナレッジ 坂田敏郎
2. マピオン新サーチのあゆみ
* 2009/8/12 新フロント オープン
o ⇒ 開始 30 分で切り戻し
o Proxy のキャシュが効かず全アクセスが
o Solr へ集中した為。
o 対策: Solr のインフラ増強
o Zone Solr のメモリを 8G ⇒ 16G
o Solr の負荷が少ない地図からオープン
3. マピオン新サーチのあゆみ
* 08/13 県地図オープン
* 08/18 住所検索オープン
* 08/24 郵便番号検索オープン
* 09/02 電話帳キャッシュ生成開始
* 09/07 電話帳検索オープン
o ⇒ 11 時にサービスイン 11:30 に切り戻し orz
4. マピオン新サーチのあゆみ
* 対策:アクセスが少なくなる21時から翌朝8時
* まで本番公開しキャッシュを貯める
* 09/15 電話帳検索 24時間サービスに成功!
* 構成
o ユーザー側 9台
o クローラ側 3台
計: 12 台
5. マピオン新サーチのあゆみ
* 11/10 Proxy に ICP 設定を実施
* 11/16 月曜 10 時問題
* 12/07 クローラ用サーバ増設
* 構成
o ユーザー側 12 台
o クローラ側 4 台
計: 16 台
6. 原因として
* 現在使用している Proxy サーバは、以前使っていた製品よりキャッシュが効かず Solr へのアクセスが想定より多くなった。
* Solr1.3 のパフォーマンスが当初の見込みより出なかった。
7.
* Solr パフォーマンス改善プロジェクト
8. Solr パフォーマンス改善プロジェクト
* Solr1.4 動かしてみた
11.73 18.03 20 25.52 18.05 10 上記4つのテストのミックス 5.73 9.01 20 8.56 9.01 10 緯度経度 - 距離 5000 ファセット 5.61 9.00 20 7.76 9.01 10 緯度経度 - 距離 5000 1201.83 1801.69 20 1325.81 1510.58 10 東京 - 市区町村でファセット 1650.56 2135.83 20 1848.82 1846.32 10 大手町 - ファセットなし Solr1.4 Solr1.3 TPS 同時接続数 テスト内容
9. Solr パフォーマンス改善プロジェクト あれ・・? Solr1.4 でもあまりパフォーマンスでねぇ。 そこで
10. Solr パフォーマンス改善プロジェクト
* 起動オプションのチューニング
o Solr をベースにした検索エンジン Fess( フェス ) を参考に
o チューニング
* -Xmx8192m
* -Xms5120m
* -XX:+UseGCOverheadLimit
* -XX:+UseConcMarkSweepGC
* -XX:+CMSIncrementalMode
* -XX:+UseTLAB
* -XX:MaxPermSize=128m
11. Solr パフォーマンス改善プロジェクト
* Solr サーバのキャッシュ機能を OFF
o マピオンの場合、 Solr のキャッシュを使用すると
o Full GC 地獄に...
o キャッシュは専門サービスに任せる
+ Proxy によるページキャッシュ
+ ファイルシステムのキャッシュ機能
12. Solr パフォーマンス改善プロジェクト
* ZFS を積極的に利用
o Solaris 使ってるんだし、 Solr のキャッシュではなくファイルシステムのメモリキャッシュで IO を稼ぐ
o あと、マピオンの場合、 IO-Drive 使っても、残念ながら見違える程の効果がなかった...
o コストパフォーマンスからいっても、 ZFS で十分
ZFS 利用時の注意として、システム既定値の空いているメモリを全部 ZFS が使える設定にすると、使い切ったところでシステムが固まる... -> 空きメモリの範囲に制限すると安定
13. Solr1.4 + チューニングの結果
* Solr1.3 ⇔ Solr1.4 の比較
221.38 11.73 18.03 20 上記4つのテストのミックス 112.86 5.73 9.01 20 緯度経度 - 距離 5000 ファセット 121.67 5.61 9.00 20 緯度経度 - 距離 5000 Solr1.4 Solr1.4 チューニング後 チューニング前 Solr1.3 TPS 同時接続数 テスト内容 X 12 倍
14. マピオン検索の利用現状
* 1日の Solr への総リクエスト 1千万リクエスト超
o 範囲検索はそのうち 64 万リクエスト
* 最高秒間アクセス 400 リクエスト前後
それをどのくらいの台数でさばけるようになったかというと... ユーザ側サーバのみの数値です
15. 現在構成
o 構成
+ ユーザー側 4 台
+ クローラ側 3 台
計: 16 台 計: 7 台 クローラ側に1台でも十分なくらいだが 冗長性を維持するため3台配備
16. 本番導入 ユーザ側のサーバの 場合です。 12 台-> 4 台と サーバ台数1/3 にもかかわらず、 負荷激減 ( ・∀・ )
17. 移行作業時につまづいた事
o 現状、最前段のマージ用 Solr は負荷が問題になっていないため ver1.3 の ままです。
o 当初、検索用 Solr を1台ずつサービスから切り離し、 1.4 化していく計画でしたが、 1.3 と 1.4 が混ざった状態になると、レスポンスをマージできずエラーとなってしまいました。
o Solr1.4 のサーバを予め4台セットアップして用意しておき、 LB の機能で一気に切り替えることにより対応しました。
18. Solr1.4 化に 際しての 小ネタ
19. 小ネタ その1
* lucene-spatial で一部のエリアが検索できない !?
o 四角く検索できないエリアがポツポツあることが判明
o ググってもバグ情報なし
o BoxId の計算に問題がありそうだけど修正方法がわからん
ボソ:「そう言えば、作っているのってアメリカ人だよね?」
20. 小ネタ その1
* 北米の緯度経度に近いものに変換して計算したら OK!!
o org.apache.lucene.spatial.tier.projections.CartesianTierPlotter.java
public double getTierBoxId ( double latitude, double longitude) { double [] coords = projector.coords(latitude, longitude -200.0D ); ※ ついでに半径 23km までしか検索できない問題もこれで解決 前回の勉強会でウソ言ってスミマセン orz
21. 小ネタ その2
* 新しいトークナイザー
o 「京都府」問題
o 「京都府」で検索すると「東京都府中市」がヒットしてしまう
+ つまり N-GRAM の検索ノイズ
o 形態素解析+ N-GRAM !!
+ 形態素解析したトークンが3文字以上の場合に、 N-GRAM でさらに分割
o 「東京都府中市」を N-GRAM すると
+ 「東京」「京都」 「都府」 「府中」「中市」
新しいトークナイザーでは、こうゆう不要なトークンができない !! ● 「東京」「都」「府中」「市」
22. 小ネタ その3
* データインポートハンドラーの差分更新
o optimize するとスナップショットを作るように設定
o 差分更新で1件も追加/更新/削除がなくても optimize が実行される。。。 無駄じゃねぇ?
o org.apache.solr.handler.dataimport.DocBuilder.java
private void finish(Properties lastIndexTimeProps) { if( importStatistics.docCount.longValue() == 0 && importStatistics.deletedDocCount.longValue() == 0 ){ return; } 全く更新していなければ return
23. 小ネタ その4
* ResponseWriter
o Solr の XML はフィールド名がタグの属性( name="hoge" )
o タグ名=フィールド名が分り易くねぇ?
o 独自の ResponseWriter を作成
+ タグ名=フィールド名
o ついでにオープンサーチ用の ResponseWriter も作成
FireFox でマピオンの TOP ページ行くと。。。
24. ご清聴 ありがとう ございました
メモ ■株式会社ロンウイット 関口さま ・LuceneとSolrのソース統合について。 ・Solr1.4.1ではバグがたくさん直っているらしい。 - メモリリークが幾つか直っているのは魅力的かも - マピオンも1.4化したばかりだが、試してみたい... ■株式会社サイバーエージェント 田代さま、安田さま ・すごいインフラ使ってますね... ・データ量がハンパない!さすがAmeba ・MessagePack興味あり ・Tokenizerはみなさんサービスに合わせてカスタマイズしてる ・ディスクアレイすごい効果だ ■チームラボ 田村さま ・おもしろアイディアのサービスがたくさん ・キーワードレス検索というアイディア ・画像の検索もキーワード検索にうまく置き換えて低コストで実現できる場合も ■LT Basis Technology 黒坂さま ・各種コンサルをやってくれる。 ・Tシャツいただきました。ありがとうございます! ■LT ECナビ 春山さま ・メモリ23GB超えへの挑戦 ・VMのバージョンのチョイスは慎重に ・やっぱり23GB超えはおすすめできないw ■まとめ ・おおむね開発者募集中w
会場を提供していただいたECナビさま、ありがとうございました。 懇親会、ごちそうさまでした!

-
この記事のトラックバックURLhttp://labs.mapion.co.jp/mtos/mt-tb.cgi/69





