Wie lösen die "Sperre erhalten timed out" bei der Verwendung von Solr klar?
Habe ich zwei Kerne für unsere Solr-system (Solr version 3.6.1). Wenn ich Sie aufrufen, den folgenden Befehl auf unsere engagierten Solr-server hinzufügen und dann die index Datei:
java -Durl=http://solrprod:8080/solr/original/update -jar /home/solr/solr3/biomina/solr/post.jar /home/solr/tmp/2008/c2m-dump-01.noDEID_clean.xml
Bekomme ich eine exception in /usr/share/tomcat7/logs/solr.2013-12-11.log
Datei (nach etwa 6 Minuten warten):
SEVERE: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/home/solr/solr3/biomina/solr/original/data/index/write.lock
(Sehen Sie die detaillierte Ausgabe der es am Ende dieser Meldung).
Ich versuchte, ändern Sie das Zeitlimit für sperren (durch Einstellung writeLockTimeout
zu 300000
) , aber das hat das problem nicht lösen. Ich bin nicht mit jeder benutzerdefinierte Skript, nur die post.jar
kommt mit Solr 3.1.6 hinzufügen und den index.
Irgendwelche Ideen, was verändert werden muss, um loszuwerden dieser Fehler und erfolgreich fügen Sie die XML-Datei über Solr und indizieren Sie?
Inhalt /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
http://www.apache.org/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>
Relevat Teil solrconfig.xml (für die core-namens 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 Teil solrconfig.xml (für die core-namens 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>
Detaillierte Ausgabe der Ausnahme
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.solr.common.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.net.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
System details:
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden änderungen das Problem gelöst:
Angewendet die beschriebenen änderungen an https://stackoverflow.com/a/3035916/236007
Geschaltet Oracle Java Laufzeit (es war IBM Java Laufzeit).
Setzen die
ulimit -v unlimited
im/etc/init.d/tomcat7
.Geändert
/usr/share/tomcat7/bin/setenv.sh
- Datei wie der folgenden (geben Sie rund 4 GB Speicher):export JAVA_OPTS="$JAVA_OPTS -Xmx4000m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mnt/data/tomcat_dump"
Habe Probleme mit
Lock obtain timed out
fürwrite.lock
- Datei. Es ist aufgetreten nach einem ziemlich harten reset und es stellte sich heraus, dass ich, nach dem Neustart, hatte zwei Prozesse ausgeführt werden, da die erste hatte wurde abrupt ab, bevor getötet.Läuft
ps aux | grep solr
und Tötung der fehlerhafte Prozess und lassen Sie die anderen starten dann das Problem gelöst.write.lock
Datei starten Sie dann den solr-Prozess.Hatte ich diese Fehler für die Allgemeine Lucene-Bibliothek-Nutzung und die problem waren Fehler im Dateisystem, D. H. die reproduzierbare Fehler verschwunden, nachdem
fsck
mit der Reparatur. Ich füge dieser Antwort in dieser Frage, als ich diese Frage zum ersten mal.