我在Load Balancer后面运行了八个solr
服务器(版本3.5
)实例。所有服务器都相同,LB由数字连接加权。服务器有大约4M文档,并接收不断的查询流。当solr服务器启动时,它工作正常。但是经过一段时间的运行后,它开始需要更长时间的响应查询,并且服务器I / O变得疯狂到100%。看看New Relic图:
如果服务器在开始时表现良好,我会在一段时间后开始失败吗?然后,如果我重新启动服务器,它会同时返回到低I / O,并且会反复重复。
答案 0 :(得分:0)
此问题的答案与this blog post中的内容有关。
在这种情况下会发生的情况是查询高度依赖于读取solr
索引。这些索引在磁盘中,对I / O很高。为了优化磁盘访问,Linux OS在内存中为访问最多的磁盘区域创建了一个缓存。它为此缓存使用空闲内存(未占用我的应用程序)。当内存已满时,服务器需要再次从磁盘读取。因此,当solr重新启动时,JVM占用的内存更少,并且磁盘缓存有更多可用空间。
(问题出现在具有15Gb RAM和20Gb solr
索引的服务器中)
解决方案是简单地增加服务器的RAM,因此整个索引适合内存,不需要I / O.