24
(C) Mapion Co.,Ltd. All rights reserved. こんどこそ 本当の 1.4 Solr 株式会社マピオン 岩澤英治 株式会社データ・コム・ナレッジ 坂田敏郎

第3回Solr勉強会 こんどこそ本当のSolr1.4化

Embed Size (px)

Citation preview

Page 1: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

こんどこそ本当の

1 .4S o lr 化株式会社マピオン

岩澤英治株式会社データ・コム・ナレッジ

坂田敏郎

Page 2: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

マピオン新サーチのあゆみ

2009/8/12 新フロント オープン

⇒開始 30 分で切り戻し

Proxy のキャシュが効かず全アクセスが

Solr へ集中した為。

対策: Solr のインフラ増強

     Zone Solr のメモリを 8G 16G⇒     Solr の負荷が少ない地図からオープン

Page 3: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

マピオン新サーチのあゆみ08/13 県地図オープン

08/18 住所検索オープン

08/24 郵便番号検索オープン

09/02 電話帳キャッシュ生成開始

09/07 電話帳検索オープン

⇒11 時にサービスイン 11:30 に切り戻し orz

Page 4: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

マピオン新サーチのあゆみ

対策:アクセスが少なくなる 21 時から翌朝8 時

    まで本番公開しキャッシュを貯める

09/15 電話帳検索 24 時間サービスに成功!

構成ユーザー側  9 台

クローラ側  3 台 計:12台

Page 5: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

マピオン新サーチのあゆみ

11/10 Proxy に ICP 設定を実施

11/16 月曜 10 時問題

12/07 クローラ用サーバ増設

構成

ユーザー側 12 台

クローラ側 4 台

計:16台

Page 6: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

原因として

現在使用している Proxy サーバは、以前使っていた製品よりキャッシュが効かず Solr へのアクセスが想定より多くなった。

Solr1.3 のパフォーマンスが当初の見込みより出なかった。

Page 7: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

Solrパフォーマンス改善プロジェクト

Page 8: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

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.4Solr1.3

TPS同時接続数テスト内容

Page 9: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

Solr パフォーマンス改善プロジェクト

あれ・・?Solr1.4でもあまりパフォーマンスでねぇ。

そこで

Page 10: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

Solr パフォーマンス改善プロジェクト起動オプションのチューニング

Solr をベースにした検索エンジン Fess( フェス ) を参考に

チューニング

-Xmx8192m

-Xms5120m

-XX:+UseGCOverheadLimit

-XX:+UseConcMarkSweepGC

-XX:+CMSIncrementalMode

-XX:+UseTLAB

-XX:MaxPermSize=128m

Page 11: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

Solr パフォーマンス改善プロジェクトSolr サーバのキャッシュ機能を OFF

マピオンの場合、 Solr のキャッシュを使用すると

Full GC 地獄に…

キャッシュは専門サービスに任せる

Proxy によるページキャッシュ

ファイルシステムのキャッシュ機能

Solaris_Solr1.4_10

0

10

20

30

40

50

60

70

80

17:23:22

17:23:42

17:24:02

17:24:22

17:24:42

17:25:02

17:25:22

17:25:43

17:26:03

17:26:23

17:26:43

17:27:03

17:27:23

17:27:43

17:28:04

17:28:24

17:28:44

17:29:04

17:29:24

17:29:44

17:30:04

17:30:25

17:30:45

17:31:05

17:31:25

17:31:45

17:32:05

17:32:25

17:32:46

17:33:06

%usr

%sys

Page 12: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

Solr パフォーマンス改善プロジェクトZFS を積極的に利用

Solaris 使ってるんだし、 Solr のキャッシュではなくファイルシステムのメモリキャッシュで IO を稼ぐ

あと、マピオンの場合、 IO-Drive 使っても、残念ながら見違える程の効果がなかった…

コストパフォーマンスからいっても、 ZFS で十分

ZFS 利用時の注意として、システム既定値の空いているメモリを全部 ZFS が使える設定にすると、使い切ったところでシステムが固まる…

→空きメモリの範囲に制限すると安定

Page 13: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

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.4Solr1.4

チューニング後チューニング前Solr1.3

TPS

同時接続数

テスト内容

Solr1.3 Solr1.4⇔ の比較

X12倍

Page 14: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

マピオン検索の利用現状

1日の Solr への総リクエスト

1千万リクエスト超範囲検索はそのうち 64万リクエスト

最高秒間アクセス

400 リクエスト前後

それをどのくらいの台数でさばけるようになったかというと…

ユーザ側サーバのみの数値です

Page 15: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

現在構成

構成

ユーザー側 4 台

クローラ側 3 台 計:16台計:7 台

クローラ側に1台でも十分なくらいだが冗長性を維持するため3台配備

Page 16: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

本番導入

ユーザ側のサーバの場合です。

12 台→ 4 台とサーバ台数1/3にもかかわらず、負荷激減 ( ・∀・ )

Page 17: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

移行作業時につまづいた事

現状、最前段のマージ用 Solr は負荷が問題になっていないため ver1.3 のままです。

当初、検索用 Solr を1台ずつサービスから切り離し、 1.4化していく計画でしたが、 1.3 と 1.4 が混ざった状態になると、レスポンスをマージできずエラーとなってしまいました。

Solr1.4 のサーバを予め4台セットアップして用意しておき、 LB の機能で一気に切り替えることにより対応しました。

Page 18: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

1 .4S o lr 化に際しての小ネタ

Page 19: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

小ネタ その1

lucene-spatial で一部のエリアが検索できない !?四角く検索できないエリアがポツポツあることが判明

ググってもバグ情報なし

BoxId の計算に問題がありそうだけど修正方法がわからん

ボソ:「そう言えば、作っているのってアメリカ人だよね?」

Page 20: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

小ネタ その1

北米の緯度経度に近いものに変換して計算したらOK!!

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

Page 21: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

小ネタ その2

新しいトークナイザー「京都府」問題

「京都府」で検索すると「東京都府中市」がヒットしてしまう

» つまり N-GRAM の検索ノイズ

形態素解析+ N-GRAM !!» 形態素解析したトークンが3文字以上の場合に、 N-GRAM でさらに分割

「東京都府中市」を N-GRAM すると» 「東京」「京都」「都府」「府中」「中市」

新しいトークナイザーでは、こうゆう不要なトークンができない !! ●「東京」「都」「府中」「市」

Page 22: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

小ネタ その3

データインポートハンドラーの差分更新optimize するとスナップショットを作るように設定

差分更新で1件も追加/更新/削除がなくても optimizeが実行される。。。 無駄じゃねぇ?

org.apache.solr.handler.dataimport.DocBuilder.java

private void finish(Properties lastIndexTimeProps) {

if( importStatistics.docCount.longValue() == 0 && importStatistics.deletedDocCount.longValue() == 0 ){

  return;

}

全く更新していなければ return

Page 23: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

小ネタ その4

ResponseWriterSolr の XML はフィールド名がタグの属性( name=“hoge”)

タグ名=フィールド名が分り易くねぇ?

独自の ResponseWriter を作成» タグ名=フィールド名

ついでにオープンサーチ用の ResponseWriter も作成

FireFox でマピオンの TOP ページ行くと。。。

Page 24: 第3回Solr勉強会 こんどこそ本当のSolr1.4化

(C) Mapion Co.,Ltd. All rights reserved.

ご清聴ありがとうございました