You're sending 100K docs in a single packet? It's vaguely possible that you're
getting a timeout although that doesn't square with no docs being indexed...

Hmmm, to check you could do a manual commit. Or watch the Solr log to
see if update
requests ever go there.

Or you're running out of memory on the client.

Or even exceeding the packet size that the servlet container will accept?

But I think at root you're misunderstanding
ConcurrentUpdateSolrClient. It doesn't
partition up a huge array and send them in parallel, it parallelized sending the
packet each call is given. So it's trying to send all 100K docs at
once. Probably not
what you were aiming for.

Try making batches of 1,000 docs and sending them through instead.

So the parameters are a bit of magic. You can have up to the number of threads
you specify sending their entire packet to solr in parallel, and up to queueSize
requests. Note this is the _request_, not the docs in the list if I'm
reading the code
correctly.....

Best,
Erick

On Thu, Oct 29, 2015 at 1:52 AM, Markus Jelsma
<markus.jel...@openindex.io> wrote:
> Hello - we have some processes periodically sending documents to 5.3.0 in 
> local mode using ConcurrentUpdateSolrClient 5.3.0, it has queueSize 10 and 
> threadCount 4, just chosen arbitrarily having no idea what is right.
>
> Usually its a few thousand up to some tens of thousands of rather small 
> documents. Now, when the number of documents is around or near a hundred 
> thousand, client.add(Iterator<SolrInputDocument> docIterator) stalls and 
> never returns. It also doesn't index any of the documents. Upon calling, it 
> quickly eats CPU and a load of heap but shortly after it goes idle, no CPU 
> and memory is released.
>
> I am puzzled, any ideas to share?
> Markus

Reply via email to