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

Post on 08-Jul-2015

7.217 Views

Category:

Technology

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

こんどこそ本当の

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

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

坂田敏郎

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

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

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

⇒開始 30 分で切り戻し

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

Solr へ集中した為。

対策: Solr のインフラ増強

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

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

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

08/18 住所検索オープン

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

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

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

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

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

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

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

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

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

構成ユーザー側  9 台

クローラ側  3 台 計:12台

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

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

11/10 Proxy に ICP 設定を実施

11/16 月曜 10 時問題

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

構成

ユーザー側 12 台

クローラ側 4 台

計:16台

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

原因として

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

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

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

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

(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同時接続数テスト内容

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

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

(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

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

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

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

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

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

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

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

(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倍

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

マピオン検索の利用現状

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

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

最高秒間アクセス

400 リクエスト前後

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

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

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

現在構成

構成

ユーザー側 4 台

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

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

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

本番導入

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

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

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

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

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

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

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

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

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

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

小ネタ その1

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

ググってもバグ情報なし

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

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

(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

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

小ネタ その2

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

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

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

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

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

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

(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

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

小ネタ その4

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

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

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

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

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

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

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

top related