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 来说是小菜一碟,所以在大约 200 毫秒的 Solr 读取时,这里会发生一些可疑的事情。但是,您最直接的问题是您在似乎是 GET 请求期间向 Solr 写信——这是怎么回事?您是否保存了触发太阳黑子自动索引的可搜索对象?如果您需要在 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

然后,您可能想要在您的solr/conf/solrconfig.xml- 它在默认的 Sunspot Solr 发行版中被注释掉,并且那里也有一个解释。我发现每分钟一次是一个很好的起点。

进行这些更改之后,我会看看您的读取速度是否仍然很慢——我认为这很可能是因为每次搜索时,您对 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 回答