solr批量添加索引数据报错

记一次solr批量添加数据报错
1、环境说明:
windows服务器,solr5.5.4版本,jdk1.7版本。
2、需求描述:
本人根据项目需要,需要在程序中提供solrj的批量添加全文索引的功能,主要是将从数据库中查询到的数据及对应的word文档物理路径,批量添加到solr索引服务中,由于单线程时间比较长,所以在开发程序时,运用了spring的线程池进行处理,即在点击页面按钮开始,循环遍历数据库中查询到的结果集,在遍历的过程中调用spring的线程池,之后创建实现runnable接口的任务线程实例,开始去请求solr的服务进行数据添加索引的操作。
3、错误信息描述:
任务开始后程序时不时的会报connect to solr服务 time out的错误,从而导致索引记录添加失败,错误截图如下:

根据错误内容,本来怀疑可能是线程池的线程数开的太多了,导致连接太多连不到solr的服务,原来的线程数配置为,最小空闲数3个,最大个数为10个。之后调小了最大线程数,发现错误还是这样。调小了最小线程数,程序运行后还是一样。接着又调整了一下缓存队列的大小,再次运行,错误还是不变。最后没办法,将空闲和最大线程数都调为了1,发现错误还是有。
4、解决办法:
静下心想来想去还是怀疑是solr的问题,怀疑可能是solr的连接不是连接池,之后导致在多个线程同时去请求连接的时候,出现了连接超时的情况,所以上网查了查solrj的更新数据的写法,发现网上说solrj在查询数据时用HttpSolrClient类来做比较好,而在更新数据时最好用ConcurrentUpdateSolrClient比较好,修改程序,在更新数据时创建连接的地方修改为ConcurrentUpdateSolrClient,设置队列大小和线程数的大小,修改spring线程池的最大和空闲的线程数,启动程序在运行,发现错误没有了。后台没在报过任何错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值