1

我们公司有几种不同的获取潜在客户的方式,以及我们处理的几种类型的潜在客户。每种类型的潜在客户之间只有微小的差异,并且大部分信息与一种或多种其他潜在客户类型共享或相关。我和我的团队正在尝试使用 Solr 构建/配置一个索引,以处理每种潜在客户类型及其所有共享数据......客户数据、度假村数据。等(总共大约 120 万条记录)。我们目前正在托管一个运行 Tomcat 6 和 Solr 3.4 的 Ubuntu 服务器(12G RAM,8 核 Opteron)。

我希望索引在客户在我们的网站上提交潜在客户表单时实时添加记录(每天大约 1500-2000 次),以及在员工添加或修改数据时更新(每天大约 2500-3000 次) .

此外,我需要网站上的客户和内部员工能够使用过滤器、构面、自动完成、突出显示以及人们期望从编写良好的搜索中获得的所有内容快速搜索这些数据。

此设置当前正在运行,但经常在网站和我们的内部应用程序中挂起更新记录。每 1000 个文档或 5 秒提交一次,我每天优化一次。这种设置的最佳 JVM、服务器或 Solr 配置是什么?任何帮助将不胜感激,我可以向愿意提供帮助的任何人提供所需的尽可能多的信息。

4

1 回答 1

4

首先,您不应该优化.

在 Solr 中配置 JVM 堆大小时有两个常见错误:

  • 为 JVM 提供过多内存(操作系统缓存将无法缓存磁盘操作),
  • 没有给 JVM 足够的内存(垃圾收集器会有很大的压力,它会被迫频繁地运行 stop-the-world 收集,使用 JMX 监控来确定是否触发了 full GC)。

您的应用程序可能挂起的另一个原因是后台合并。Lucene 是基于段的,只要段数高于mergeFactor,就会触发合并。较低的值mergeFactor可能会解释挂起。

您应该提供有关当前设置的更多详细信息,以便我们为您提供帮助:

  • JVM 大小,
  • 您正在使用什么收集器(G1、吞吐量收集器、并发低暂停收集器,...)
  • 索引大小(在磁盘上,而不是文档数),
  • mergeFactor, ramBufferSizeMB, ...
于 2012-06-12T23:22:59.930 回答