如何解决使用Solr时“锁定获得超时”的问题?

编程入门 行业动态 更新时间:2024-10-28 03:24:38
本文介绍了如何解决使用Solr时“锁定获得超时”的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我的Solr系统有两个内核(Solr版本3.6.1)。当我在我们的专用Solr服务器上调用以下命令行来添加然后索引文件时:

I have two cores for our Solr system (Solr version 3.6.1). When I invoke the following command line on our dedicated Solr server to add and then index a file:

java -Durl=solrprod:8080/solr/original/update -jar /home/solr/solr3/biomina/solr/post.jar /home/solr/tmp/2008/c2m-dump-01.noDEID_clean.xml

我在 /usr/share/tomcat7/logs/solr.2013-12-中收到异常11.log 文件(等待约6分钟后):

I get an exception in /usr/share/tomcat7/logs/solr.2013-12-11.log file (after about 6 minutes of waiting):

SEVERE: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/home/solr/solr3/biomina/solr/original/data/index/write.lock

(你可以在这条消息的末尾看到它的详细输出)。

(You can see the detailed output of it at the end of this message).

我试图修改时间-out for locks(通过将 writeLockTimeout 设置为 300000 ),但这并没有解决问题。我没有使用任何自定义脚本,只需要Solr 3.1.6附带的 post.jar 来添加和索引。

I tried to modify the time-out for locks (by setting writeLockTimeout to 300000) , but this did not solve the problem. I'm not using any custom script, just the post.jar that comes with Solr 3.1.6, to add and index.

有关需要更改哪些内容以摆脱此错误并成功将XML文件添加到Solr并将其编入索引的任何想法?

Any ideas about what needs to be changed to get rid of this error and successfully add the XML file about to Solr and index it?

内容 /home/solr/solr3/biomina/solr/solr.xml :

Contents of /home/solr/solr3/biomina/solr/solr.xml:

<?xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at www.apache/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- All (relative) paths are relative to the installation path persistent: Save changes made via the API to this file sharedLib: path to a lib directory that will be shared across all cores --> <solr persistent="true"> <!-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler --> <cores adminPath="/admin/cores"> <core name="original" instanceDir="original" /> <core name="deidentified" instanceDir="deidentified" /> </cores> </solr>

关联solrconfig.xml的一部分(针对名为的核心原创):

Relevat part of solrconfig.xml (for the core named original):

<indexConfig> <!-- maxFieldLength specifies max number of *tokens* indexed per field. Default: 10000 --> <!-- <maxFieldLength>10000</maxFieldLength> --> <!-- Maximum time to wait for a write lock (ms) for an IndexWriter. Default: 1000 --> <writeLockTimeout>300000</writeLockTimeout>

relevat solrconfig.xml的一部分(针对名为的核心deidentified ):

Relevat part of solrconfig.xml (for the core named deidentified):

<indexConfig> <!-- maxFieldLength specifies max number of *tokens* indexed per field. Default: 10000 --> <!-- <maxFieldLength>10000</maxFieldLength> --> <!-- Maximum time to wait for a write lock (ms) for an IndexWriter. Default: 1000 --> <writeLockTimeout>300000</writeLockTimeout>

详细的例外输出

Dec 11, 2013 11:27:25 AM org.apache.solr.core.SolrCore execute INFO: [original] webapp=/solr path=/update params={} status=500 QTime=300070 Dec 11, 2013 11:32:25 AM org.apache.solrmon.SolrException log SEVERE: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/home/solr/solr3/biomina/solr/original/data/index/write.lock at org.apache.lucene.store.Lock.obtain(Lock.java:84) at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1098) at org.apache.solr.update.SolrIndexWriter.<init>(SolrIndexWriter.java:84) at org.apache.solr.update.UpdateHandler.createMainIndexWriter(UpdateHandler.java:101) at org.apache.solr.update.DirectUpdateHandler2.openWriter(DirectUpdateHandler2.java:171) at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:219) at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:61) at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:115) at org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:157) at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:79) at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:58) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376) at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:626) at java.lang.Thread.run(Thread.java:804) Dec 11, 2013 11:32:25 AM org.apache.solr.core.SolrCore execute INFO: [original] webapp=/solr path=/update params={} status=500 QTime=556916

系统详细信息:

uname -a Linux solrprod 3.0.93-0.8-default #1 SMP Tue Aug 27 08:44:18 UTC 2013 (70ed288) x86_64 x86_64 x86_64 GNU/Linux java -version java version "1.7.0" Java(TM) SE Runtime Environment (build pxa6470sr6-20131015_01(SR6)) IBM J9 VM (build 2.6, JRE 1.7.0 Linux amd64-64 Compressed References 20131013_170512 (JIT enabled, AOT enabled) J9VM - R26_Java726_SR6_20131013_1510_B170512 JIT - r11.b05_20131003_47443 GC - R26_Java726_SR6_20131013_1510_B170512_CMPRSS J9CL - 20131013_170512) JCL - 20131011_01 based on Oracle 7u45-b18

推荐答案

以下修改解决了这个问题:

The following modifications solved the issue:

  • 应用 stackoverflow/a/3035916/236007

切换到 Oracle Java 运行时( IBM Java 运行时)。

Switched to Oracle Java runtime (it was IBM Java runtime).

将 ulimit -v unlimited 放入 /etc/init.d/tomcat7 。

修改 /usr/share/tomcat7/bin/setenv.sh 文件如下(给它大约4 GB内存):

Modified the /usr/share/tomcat7/bin/setenv.sh file as the following (giving it about 4 GB memory):

export JAVA_OPTS =$ JAVA_OPTS -Xmx4000m -XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = / mnt / data / tomcat_dump

更多推荐

如何解决使用Solr时“锁定获得超时”的问题?

本文发布于:2023-07-16 03:43:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1117471.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何解决   Solr

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!