您的位置:首页 > 大数据

Solr 千万级大数据索引查询导致服务器崩溃的原因和解决

2016-11-10 17:48 696 查看
最近对老旧系统改造需要提高大数据量的查询速度,引入了solr。建了个28803309条的索引:

但是查询时出现了后半部分数据无法全部查询出来:

第0-10条可以查出来,

solrQuery.setStart(0);
solrQuery.setRows(10);


第1千万到1千万零10条也可以查出来

solrQuery.setStart(10000000);
solrQuery.setRows(10000010);


但是当setStart()大到一定程度比如

solrQuery.setStart(18000000);

solrQuery.setRows(10)

时,solr服务器就崩溃掉了。必须重启solr服务。

原因分析:

solr的查询涉及到排序,文件里没法直接分页了,所以它是在内存中分页的。在内存中分页,查询速度也非常快,但是需要的内存大,空间换时间。

因此,解决方法:加大内存,查看/solr/bin/下的启动本solr

echo "  -z <zkHost>   Zookeeper connection string; only used when running in SolrCloud mode using -c"
echo "                   To launch an embedded Zookeeper instance, don't pass this parameter."
echo ""
echo "  -m <memory>   Sets the min (-Xms) and max (-Xmx) heap size for the JVM, such as: -m 4g"
echo "                  results in: -Xms4g -Xmx4g; by default, this script sets the heap size to 512m"
echo ""
echo "  -s <dir>


可知,solr的启动脚本里默认情况下最大启动内存为512M ,通过启动参数 -m 重启内存为2G

[root@kaifa-19 bin]# ./solr start -m 2g


此时重新访问solr服务 查询任何区域不再崩溃。

可以根据自己的机器配置设置java的合理的jvm内存值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐