Solr I / O随着时间的推移而增加

时间:2015-01-23 12:43:59

标签: linux solr lucene search-engine

我在Load Balancer后面运行了八个solr服务器(版本3.5)实例。所有服务器都相同,LB由数字连接加权。服务器有大约4M文档,并接收不断的查询流。当solr服务器启动时,它工作正常。但是经过一段时间的运行后,它开始需要更长时间的响应查询,并且服务器I / O变得疯狂到100%。看看New Relic图:

enter image description here

如果服务器在开始时表现良好,我会在一段时间后开始失败吗?然后,如果我重新启动服务器,它会同时返回到低I / O,并且会反复重复。

1 个答案:

答案 0 :(得分:0)

此问题的答案与this blog post中的内容有关。

在这种情况下会发生的情况是查询高度依赖于读取solr索引。这些索引在磁盘中,对I / O很高。为了优化磁盘访问,Linux OS在内存中为访问最多的磁盘区域创建了一个缓存。它为此缓存使用空闲内存(未占用我的应用程序)。当内存已满时,服务器需要再次从磁盘读取。因此,当solr重新启动时,JVM占用的内存更少,并且磁盘缓存有更多可用空间。

(问题出现在具有15Gb RAM和20Gb solr索引的服务器中)

解决方案是简单地增加服务器的RAM,因此整个索引适合内存,不需要I / O.