2011-09-22 17 views

Respuesta

16

Como es bien explicado here debe reducir el número de confirmaciones que realice, o se cambia el valor de maxWarmingSearchers en solrconfig.xml (que no es una buenas prácticas)

+4

¿Por qué no es una buena práctica? – TTT

+2

Dicen: "es riesgoso hacerlo a menos que esté seguro de que tiene los recursos del sistema (RAM, CPU, etc.) para hacerlo de forma segura", pero ¿cómo sabe que tiene suficientes recursos? – lizzie

+0

Bien. También he estado investigando esto y la guía del usuario dice: "Si solo encuentras este error con poca frecuencia debido a situaciones de platija, probablemente estarás bien simplemente ignorándolo". – TTT

16

Según el Solr FAQ: What does "exceeded limit of maxWarmingSearchers=X" mean?

Si se encuentra con este error mucho, usted puede (en teoría) aumentar el número i n su maxWarmingSearchers, pero eso es riesgoso de hacer a menos que tenga confianza en que tiene los recursos del sistema (RAM, CPU, etc.) para hacer de forma segura. Una forma más correcta de lidiar con la situación es reducir con qué frecuencia envía commits.

Lo que significa que este error es que básicamente hace confirmaciones con demasiada frecuencia y que la memoria caché interna no puede seguir el ritmo de "borre la caché y déjeme buscar con los datos nuevos". Debes disminuir la frecuencia que estás haciendo commits. Puede encontrar más información sobre este problema aquí en Near Realtime Search Tuning, pero la idea básica es que cuantas más facetas use, mayor será el intervalo que necesitará entre las confirmaciones.

Una forma de evitar esto fue dejar de realizar confirmaciones manuales (es decir, hacer que mi aplicación envíe datos a Solr y luego ejecutar una solicitud de confirmación) y activar solr autocommit.

He aquí un ejemplo:

<!-- solrconfig.xml --> 
<autoCommit> 
    <maxDocs>10000</maxDocs> <!-- maximum uncommited docs before autocommit triggered --> 
    <maxTime>15000</maxTime> <!-- maximum time (in MS) after adding a doc before an autocommit is triggered --> 
    <openSearcher>false</openSearcher> <!-- SOLR 4.0. Optionally don't open a searcher on hard commit. This is useful to minimize the size of transaction logs that keep track of uncommitted updates. --> 
</autoCommit> 

que tendrá que determinar qué tan grande de intervalo que se necesita (es decir maxTime) pero en la práctica cada vez que agrego búsqueda más facetas de mi solicitud (o más índices o ¿qué tienes? Tengo que aumentar el intervalo.

Si necesita más búsqueda en tiempo real que la frecuencia de estas confirmaciones le permitirá consultar Solr soft commits.

+0

Gran respuesta. También leí de' solrconfig.xml' que en lugar de habilitar autoCommit, considere usar "commitWithin" al agregar documentos. [aquí] (http://wiki.apache.org/solr/UpdateXmlMessages#Passing_commit_and_commitWithin_parameters_as_part_of_the_URL) – Stanley

0

Según el https://wiki.apache.org/solr/CommitWithin

Existen múltiples estrategias cometen en Solr. El más conocido es explícito commits del cliente. Luego tiene AutoCommit, configurado en solrconfig.xml, que permite a Solr confirmar automáticamente adds después de un cierto tiempo o cantidad de documentos, y finalmente puede haber un compromiso detrás de escena cuando el buffer de entrada se llena.

Puede usar 'CommitWithin' para solucionar este problema.
Solr3.5 y más tarde, puede ser server.add(mySolrInputDocument, 10000);
En versiones anteriores, se puede utilizar a continuación el código
UpdateRequest req = new UpdateRequest(); req.add(mySolrInputDocument); req.setCommitWithin(10000); req.process(server);
Se puede reducir la frecuencia con la que envía las confirmaciones.

Cuestiones relacionadas