我部署了一个5分的基础架构,其中: shard1有3124422个文档shard2有920414个文档shard3有602772个文档shard4有2083492个文档shard5有11915639个文档索引总大小:100 has
操作系统是Linux (Fedora release 8),vMem等于7872420,我使用Jetty (从Solr示例下载)运行服务器: java -Xmx3024M -Dsolr.solr.home=multicore -jar start.jar
查询的响应时间大约为2-3秒。然而,如果我同时执行几个查询,性能会立即下降:1同时查询: 2516ms 2同时查询: 4250,4469 ms 3同时查询: 5781,6219,6219 ms 4同时查询: 6484,7203,7719,7781 ms...
使用JConsole监视服务器的java进程,我检查了堆内存和CPU使用率没有达到上限,所以服务器不应该过载。谁能给我一个方法,我应该如何调优实例,使其不那么依赖于同时查询的数量?
提前感谢
发布于 2011-01-08 12:11:36
您可能想要考虑为每个分片创建从属,以便可以支持更多的读取(请参阅http://wiki.apache.org/solr/SolrReplication),但是,您所获得的性能并不是很合理。
从您看到的响应时间来看,您的磁盘肯定是瓶颈。为每个分片加载足够的内存来容纳完整的索引(每个分片20 It?)可能会更便宜。您可以使用sysstat包中的'sar‘实用程序查看磁盘访问。如果在搜索进行期间,任何盘片上的磁盘利用率始终超过30%,这是一个好兆头,表明您需要添加一些内存,并让操作系统缓存索引。
你已经有一段时间没有运行过优化了吗?也许查找时间过长的部分原因是大量的碎片索引散布在整个盘片上。
发布于 2011-01-10 21:18:31
正如我在Solr mailinglist上所说的,3天前你问了同样的问题,Solr/Lucene从SSD中受益良多,虽然在更多的机器上进行分片或添加引导加载的RAM将适用于I/O,但SSD选项相对便宜且非常容易。
买一台英特尔X25 G2 (在NewEgg上售价409美元,160 G2)或一个新的基于SandForce的固态硬盘,把你现有的100 G2的索引放在上面,看看会发生什么。最多也就是半天的工作。如果它失败了,清理你的工作站的驱动器。你会对它给你带来的性能提升感到非常满意。
https://stackoverflow.com/questions/4623843
复制相似问题