4

Sunspot-Solrのスケーリングの問題に気付いた人がいるかどうか知りたいです。検索可能なパラメータをすべて削除しても、それ自体が生のクラスに対してカウントされます。ローカルでの読み込みにはまだ5〜8秒かかり、本番環境では4〜5秒かかります。

他の誰かがSunspot-Solrをスケーリングできましたか?いくつかの一般的な問題は何ですか?

どうすればこれをより深く調べることができますか?

単一のリクエストのSolrログは次のとおりです。

Solr Select (208.1ms)   {:rows=>20, :start=>0, :q=>"*:*", :sort=>"score desc", :fq=>["type:Organization", "published_b:true", "updated_at_d:[2009\\-02\\-03T16\\:11\\:55Z TO *]"]}

Solr Select (5.5ms)   {:rows=>20, :start=>0, :q=>"*:*", :sort=>"score desc", :fq=>["type:Organization", "published_b:true", "updated_at_d:[2009\\-02\\-03T16\\:11\\:55Z TO *]"]}

Solr Update (12.6ms)   <?xml version="1.0" encoding="UTF-8"?><add><doc><field name="type">User</field><field name="type">ActiveRecord::Base</field><field name="id">User 2</field><field name="class_name">User</field><field name="first_name_s">Bob</field><field name="created_at_d">2009-09-28T21:00:27Z</field><field name="last_name_s">Marley</field><field name="email_s">bob.marley@gmail.com</field><field name="name_s">Bob Marley</field><field name="last_name_text">Marley</field><field name="first_name_text">Bob</field><field name="email_text">bob.marley@gmail.com</field><field name="name_text">Bob Marley</field></doc></add>


Solr Update (487.7ms)   <?xml version="1.0" encoding="UTF-8"?><commit/>
Completed in 12632ms (View: 11633, DB: 228) | 200 OK [http://localhost/organizations/search]
4

2 に答える 2

20

1000 個のオブジェクトは Solr にとっては子供の遊びなので、ここで ~200ms の Solr 読み取りで何か怪しいことが起こっています。ただし、最も差し迫った問題は、GET 要求のように見える間に Solr に書き込みを行っていることです。これはどうしたことでしょうか? Sunspot の自動インデックスをトリガーしている検索可能なオブジェクトを保存していますか? GET リクエストの過程でモデルを更新する必要がある場合 (可能であればバックグラウンド ジョブで行う必要があります)、Sunspot で自動インデックス作成を無効にする必要があります。

searchable :auto_index => false
  # sunspot setup
end

my_model.index次に、Solr で実際にコントローラーを更新したいときに、コントローラーを明示的に呼び出す必要があります。

最後に、最後の大きな更新は Solr コミットです。これは、ステージングされていない変更をディスクに書き込み、それらの変更を反映する新しいサーチャーをロードするように Solr に指示します。コミットは高価です。Sunspot::Rails はデフォルトで、Solr に書き込むすべてのリクエストの最後にコミットを実行しますが、この動作は、運用中のライブ アプリではなく、Sunspot の新規ユーザーにとって驚きを最小限にするという原則を対象としています。あなたはそれを無効にしたいと思うでしょうconfig/sunspot.yml:

auto_commit_after_request: false

その後、おそらく autoCommit を構成したいと思うでしょうsolr/conf/solrconfig.xml-デフォルトの Sunspot Solr ディストリビューションではコメントアウトされており、そこにも説明があります。開始するには 1 分に 1 回が適していることがわかりました。

これらの変更を行った後、読み取りがまだ遅いかどうかを確認します-その原因は、検索するたびにSolrへの書き込み/コミットが原因で、新しいものをロードする必要があるためである可能性が非常に高いと思いますディスクからのサーチャー。そのため、内部キャッシュをウォームアップすることはできず、通常、非常に大きな負荷がかかります。

それが役立つことを願っています!

于 2011-02-03T21:42:22.283 に答える
2

更新のコミット中に長いリクエスト時間を経験したとき、このブログに出くわしました

mytechmembank.blogspot.de

そして、次を変更する必要があることがわかりました。

 Performance killer:
<str name="buildOnCommit">true</str>

Way to go:
<str name="buildOnCommit">false</str>

solrconfig.xml で

于 2016-06-23T10:01:46.757 に答える