solr update/json半随机挂起

solr update/json半随机挂起,solr,Solr,我是个彻头彻尾的独行侠,所以我可能错过了这里的重要信息 Solr版本:10.4.2 平台:MacOSX 我正试图将大约5000个文档添加到一个空索引中。文档有4个字段: id(字符串、索引、存储) 标题(solr.TextField,索引,未存储) 关键词(solr.TextField、多值、索引、未存储) 内容(solr.TextField,索引,未存储) 我正在使用update/json在一个紧密的循环中以100个批插入文档(为每个批向update/json端点发出新的HTTP请求)。如

我是个彻头彻尾的独行侠,所以我可能错过了这里的重要信息

Solr版本:10.4.2 平台:MacOSX

我正试图将大约5000个文档添加到一个空索引中。文档有4个字段:

  • id(字符串、索引、存储)
  • 标题(solr.TextField,索引,未存储)
  • 关键词(solr.TextField、多值、索引、未存储)
  • 内容(solr.TextField,索引,未存储)
我正在使用
update/json
在一个紧密的循环中以100个批插入文档(为每个批向
update/json
端点发出新的HTTP请求)。如果我在每个请求之间添加100毫秒的延迟,问题会变得更好。如果我延迟整整一秒钟,它就会完全消失,但这显然是令人无法接受的缓慢

我通过为HTTP请求添加非常短的超时(1秒)并实现一些重试逻辑来解决这个问题。这是可行的,但当然,当它重试时,我总是会遇到恼人的延迟

我的进程经常挂起,等待solr在进程中的某个时刻做出响应。例如,如果我从一个新的内核开始,并立即对其进行测试,以下是我每次运行的结果:

  • 请稍候,第45批solr admin将显示3280个文档
  • 等待第52批,solr admin显示3788个文档
  • 等待第14批,solr admin显示3788个文档
  • 等第17批,solr admin显示3788个文档
  • 成功完成所有批处理,solr admin显示4043个文档
  • 在这些运行期间,登录solr admin不会显示任何输出。在运行失败或成功后的任何时候,我都可以查询索引,并根据添加的数据返回合理的结果

    update/json
    请求处理程序是“隐式添加”的处理程序——在我的solrconfig.xml中没有指定它

    我已经尝试过将我的锁定机制从本机切换到简单,但行为没有改变

    如果您能提供任何帮助,我们将不胜感激。我不知道从哪里开始

    其他信息:

    1:好像永远挂着。我所说的“挂起”是指Solr从不响应HTTP请求。如果我取消请求并再次发送,它通常会立即正常工作。我让它等待大约10分钟,等待响应

    2:我的solrconfig.xml有以下内容:

    <updateHandler class="solr.DirectUpdateHandler2">
       <updateLog>
          <str name="dir">${solr.ulog.dir:}</str>
       </updateLog>
       <autoCommit> 
          <maxTime>${solr.autoCommit.maxTime:15000}</maxTime> 
          <openSearcher>false</openSearcher> 
       </autoCommit>
       <autoSoftCommit> 
          <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime> 
       </autoSoftCommit>
    </updateHandler>
    
    
    ${solr.ulog.dir:}
    ${solr.autoCommit.maxTime:15000}
    假的
    ${solr.autoSoftCommit.maxTime:-1}
    
    您没有描述实际的“挂起”。它是挂一段时间还是永远?这就大不相同了

    我假设您的实际文档(内容字段?)相当大

    可能有两件事:

  • 垃圾收集。如果您为Solr分配了大量内存, 当它达到极限时,GC可能相当长。还有Java 在测试运行期间启用GC报告的标志
  • 索引合并。 观察数据/索引目录,查看文件是否开始移动 周围
  • 还要查看服务器日志,而不仅仅是WebUI。这个 服务器日志将不断地谈论正在发生的事情,仅限于UI 显示问题
  • 还值得检查您的提交和 软提交设置是(在solrconfig.xml中)

  • 我在关于挂起和提交设置的问题中添加了一个更新(我想…),我会在服务器上查找日志,看看我能在那里破译什么。现在,我通过为HTTP请求设置一个非常低的超时(1秒)并在超时时重试,使其工作“正常”。这是缓慢的,但它的工作。