You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Pablo Anzorena <an...@gmail.com> on 2016/06/27 15:38:29 UTC

No live SolrServers triggered by maxclausecount

Hi,

I have an ensemble zookeeper consisting of 3 machines and 2 machines with
solrcloud.

With a high frequency I see in the logging:
*No live SolrServers available to handle this
request:[http://solr2:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica1
<http://solr2:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica1>,
http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2
<http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2>]*

and the state.json is:

{"usa_bills_imp_2016_20160623000000":{
    "replicationFactor":"2",
    "shards":{"shard1":{
        "range":"80000000-7fffffff",
        "state":"active",
        "replicas":{
          "core_node1":{
            "core":"usa_bills_imp_2016_20160623000000_shard1_replica2",
            "base_url":"http://solr3:8983/solr",
            "node_name":"solr3:8983_solr",
            "state":"active"},
          "core_node2":{
            "core":"usa_bills_imp_2016_20160623000000_shard1_replica1",
            "base_url":"http://solr2:8983/solr",
            "node_name":"solr2:8983_solr",
            "state":"active",
            "leader":"true"}}}},
    "router":{"name":"compositeId"},
    "maxShardsPerNode":"1",
    "autoAddReplicas":"false"}}
*And the full stacktrace of the error is:*

null:org.apache.solr.common.SolrException:
org.apache.solr.client.solrj.SolrServerException: No live SolrServers
available to handle this
request:[http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2,
http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2,
http://solr2:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica1,
http://solr2:8983/solr/usa_bills_imp_2015_20160610125230_shard1_replica1]
	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:375)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:2064)
	at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654)
	at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:450)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:227)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
	at org.eclipse.jetty.server.Server.handle(Server.java:497)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.solr.client.solrj.SolrServerException: No live
SolrServers available to handle this
request:[http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2,
http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2,
http://solr2:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica1,
http://solr2:8983/solr/usa_bills_imp_2015_20160610125230_shard1_replica1]
	at org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:355)
	at org.apache.solr.handler.component.HttpShardHandlerFactory.makeLoadBalancedRequest(HttpShardHandlerFactory.java:246)
	at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:221)
	at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:183)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:148)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	... 1 more
Caused by: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:
Error from server at
http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2:
maxClauseCount is set to 102400
	at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:560)
	at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:235)
	at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:227)
	at org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:376)
	at org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:344)
	... 10 more

So my question is if it is the maxClauseCount triggering the "No live
SolrServers" or if it is something else. I attach the Admin UI of one of
the SolrServers. The zookeeper log does not throw any errors regarding to
this. Thanks.

Re: No live SolrServers triggered by maxclausecount

Posted by Pablo Anzorena <an...@gmail.com>.
Thanks! I will analyze it and let you know.


2016-06-28 11:25 GMT-03:00 Erick Erickson <er...@gmail.com>:

> OK, but the consider what you can do to keep from having to
> create such things.
> 1> for infix notation (leading and trailing wildcards) you can
>     use ngrams to turn them into simple queries. These are
>     performance-killers.
> 2> Use reverseWildcardFactory to deal with leading wildcards
> 3> restrict the wildcard search to at least two "real" characters.
>      I can (and have) argued that a* is not useful to a user at all.
>
> The point is that your responsiveness will suffer if you come
> anywhere near 100K OR clauses. Maybe that's OK, but
> it's lurking out there.
>
>
> And no I can't see the image, the Apache server is pretty
> aggressive about stripping those too.
>
> Best,
> Erick
>
> On Tue, Jun 28, 2016 at 7:19 AM, Pablo Anzorena <an...@gmail.com>
> wrote:
>
> > Hi Erick, thanks for answering.
> >
> > I attached the image to the body so you can see it.
> >
> >
> >
> > Why do I need so many clauses?
> > It is because I have two text fields that contains in average 25 words
> > with a lot of typos (which I'm not cleaning it) and on top of that the
> > index consists of 25 million records. And we let the users make queries
> > with phrases, wildcards prefix and suffix. So for example the following
> > query is valid *q=text_field:"*ban*" AND text_field2:"foo* bar*"* (I
> > ommited the query parser syntax that allows this).
> > ​
> >
> > 2016-06-28 2:08 GMT-03:00 Erick Erickson <er...@gmail.com>:
> >
> >> That error sometimes gets reported inappropriately, as long as the
> >> servers are live
> >> you can pretty much ignore it.
> >>
> >> Attachments pretty much all get stripped by the mail server so we can't
> >> see your
> >> screen shot.
> >>
> >> Setting your max clause count to over 100K is pretty much an
> >> anti-pattern, what in the world
> >> are you doing that would require it to be that high? You haven't
> >> really shown us the query
> >> you're sending, but I bet it's amazing. Frankly, anything over the
> >> default of 1K is suspect.
> >>
> >> If this is some clause like id:(1 OR 2 OR 3 OR 4.......) you really
> >> want to try using the
> >> TermsQueryParser (note the 's'  as opposed to TermQueryParser (no 's').
> >> See:
> >>
> >>
> https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-TermQueryParser
> >>
> >> And if you use the TermsQueryParser, it's probably a good idea to sort
> >> the list of terms, it's
> >> more efficient.
> >>
> >> Or do a join or... because anything with that many terms will be
> >> rather slow to say the least.
> >>
> >> Best,
> >> Erick
> >>
> >>
> >> On Mon, Jun 27, 2016 at 8:38 AM, Pablo Anzorena <
> anzorena.fing@gmail.com>
> >> wrote:
> >> > Hi,
> >> >
> >> > I have an ensemble zookeeper consisting of 3 machines and 2 machines
> >> with
> >> > solrcloud.
> >> >
> >> > With a high frequency I see in the logging:
> >> > No live SolrServers available to handle this
> >> > request:[
> >>
> http://solr2:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica1,
> >> >
> >>
> http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2]
> >> >
> >> > and the state.json is:
> >> >
> >> > {"usa_bills_imp_2016_20160623000000":{
> >> >     "replicationFactor":"2",
> >> >     "shards":{"shard1":{
> >> >         "range":"80000000-7fffffff",
> >> >         "state":"active",
> >> >         "replicas":{
> >> >           "core_node1":{
> >> >
>  "core":"usa_bills_imp_2016_20160623000000_shard1_replica2",
> >> >             "base_url":"http://solr3:8983/solr",
> >> >             "node_name":"solr3:8983_solr",
> >> >             "state":"active"},
> >> >           "core_node2":{
> >> >
>  "core":"usa_bills_imp_2016_20160623000000_shard1_replica1",
> >> >             "base_url":"http://solr2:8983/solr",
> >> >             "node_name":"solr2:8983_solr",
> >> >             "state":"active",
> >> >             "leader":"true"}}}},
> >> >     "router":{"name":"compositeId"},
> >> >     "maxShardsPerNode":"1",
> >> >     "autoAddReplicas":"false"}}
> >> >
> >> > And the full stacktrace of the error is:
> >> >
> >> > null:org.apache.solr.common.SolrException:
> >> > org.apache.solr.client.solrj.SolrServerException: No live SolrServers
> >> > available to handle this
> >> > request:[
> >>
> http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2,
> >> >
> >>
> http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2,
> >> >
> >>
> http://solr2:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica1,
> >> >
> >>
> http://solr2:8983/solr/usa_bills_imp_2015_20160610125230_shard1_replica1]
> >> >       at
> >> >
> >>
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:375)
> >> >       at
> >> >
> >>
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
> >> >       at org.apache.solr.core.SolrCore.execute(SolrCore.java:2064)
> >> >       at
> >> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654)
> >> >       at
> >> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:450)
> >> >       at
> >> >
> >>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:227)
> >> >       at
> >> >
> >>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
> >> >       at org.eclipse.jetty.server.Server.handle(Server.java:497)
> >> >       at
> >> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
> >> >       at
> >> >
> >>
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
> >> >       at java.lang.Thread.run(Thread.java:745)
> >> > Caused by: org.apache.solr.client.solrj.SolrServerException: No live
> >> > SolrServers available to handle this
> >> > request:[
> >>
> http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2,
> >> >
> >>
> http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2,
> >> >
> >>
> http://solr2:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica1,
> >> >
> >>
> http://solr2:8983/solr/usa_bills_imp_2015_20160610125230_shard1_replica1]
> >> >       at
> >> >
> >>
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:355)
> >> >       at
> >> >
> >>
> org.apache.solr.handler.component.HttpShardHandlerFactory.makeLoadBalancedRequest(HttpShardHandlerFactory.java:246)
> >> >       at
> >> >
> >>
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:221)
> >> >       at
> >> >
> >>
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:183)
> >> >       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> >> >       at
> >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> >> >       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> >> >       at
> >> >
> >>
> org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:148)
> >> >       at
> >> >
> >>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> >> >       at
> >> >
> >>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> >> >       ... 1 more
> >> > Caused by:
> >> > org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:
> >> Error
> >> > from server at
> >> >
> >>
> http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2:
> >> > maxClauseCount is set to 102400
> >> >       at
> >> >
> >>
> org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:560)
> >> >       at
> >> >
> >>
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:235)
> >> >       at
> >> >
> >>
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:227)
> >> >       at
> >> >
> >>
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:376)
> >> >       at
> >> >
> >>
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:344)
> >> >       ... 10 more
> >> >
> >> > So my question is if it is the maxClauseCount triggering the "No live
> >> > SolrServers" or if it is something else.
> >> > I attach the Admin UI of one of the SolrServers.
> >> > The zookeeper log does not throw any errors regarding to this.
> >> >
> >> >
> >> > Thanks.
> >> >
> >>
> >
> >
>

Re: No live SolrServers triggered by maxclausecount

Posted by Erick Erickson <er...@gmail.com>.
OK, but the consider what you can do to keep from having to
create such things.
1> for infix notation (leading and trailing wildcards) you can
    use ngrams to turn them into simple queries. These are
    performance-killers.
2> Use reverseWildcardFactory to deal with leading wildcards
3> restrict the wildcard search to at least two "real" characters.
     I can (and have) argued that a* is not useful to a user at all.

The point is that your responsiveness will suffer if you come
anywhere near 100K OR clauses. Maybe that's OK, but
it's lurking out there.


And no I can't see the image, the Apache server is pretty
aggressive about stripping those too.

Best,
Erick

On Tue, Jun 28, 2016 at 7:19 AM, Pablo Anzorena <an...@gmail.com>
wrote:

> Hi Erick, thanks for answering.
>
> I attached the image to the body so you can see it.
>
>
>
> Why do I need so many clauses?
> It is because I have two text fields that contains in average 25 words
> with a lot of typos (which I'm not cleaning it) and on top of that the
> index consists of 25 million records. And we let the users make queries
> with phrases, wildcards prefix and suffix. So for example the following
> query is valid *q=text_field:"*ban*" AND text_field2:"foo* bar*"* (I
> ommited the query parser syntax that allows this).
> ​
>
> 2016-06-28 2:08 GMT-03:00 Erick Erickson <er...@gmail.com>:
>
>> That error sometimes gets reported inappropriately, as long as the
>> servers are live
>> you can pretty much ignore it.
>>
>> Attachments pretty much all get stripped by the mail server so we can't
>> see your
>> screen shot.
>>
>> Setting your max clause count to over 100K is pretty much an
>> anti-pattern, what in the world
>> are you doing that would require it to be that high? You haven't
>> really shown us the query
>> you're sending, but I bet it's amazing. Frankly, anything over the
>> default of 1K is suspect.
>>
>> If this is some clause like id:(1 OR 2 OR 3 OR 4.......) you really
>> want to try using the
>> TermsQueryParser (note the 's'  as opposed to TermQueryParser (no 's').
>> See:
>>
>> https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-TermQueryParser
>>
>> And if you use the TermsQueryParser, it's probably a good idea to sort
>> the list of terms, it's
>> more efficient.
>>
>> Or do a join or... because anything with that many terms will be
>> rather slow to say the least.
>>
>> Best,
>> Erick
>>
>>
>> On Mon, Jun 27, 2016 at 8:38 AM, Pablo Anzorena <an...@gmail.com>
>> wrote:
>> > Hi,
>> >
>> > I have an ensemble zookeeper consisting of 3 machines and 2 machines
>> with
>> > solrcloud.
>> >
>> > With a high frequency I see in the logging:
>> > No live SolrServers available to handle this
>> > request:[
>> http://solr2:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica1,
>> >
>> http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2]
>> >
>> > and the state.json is:
>> >
>> > {"usa_bills_imp_2016_20160623000000":{
>> >     "replicationFactor":"2",
>> >     "shards":{"shard1":{
>> >         "range":"80000000-7fffffff",
>> >         "state":"active",
>> >         "replicas":{
>> >           "core_node1":{
>> >             "core":"usa_bills_imp_2016_20160623000000_shard1_replica2",
>> >             "base_url":"http://solr3:8983/solr",
>> >             "node_name":"solr3:8983_solr",
>> >             "state":"active"},
>> >           "core_node2":{
>> >             "core":"usa_bills_imp_2016_20160623000000_shard1_replica1",
>> >             "base_url":"http://solr2:8983/solr",
>> >             "node_name":"solr2:8983_solr",
>> >             "state":"active",
>> >             "leader":"true"}}}},
>> >     "router":{"name":"compositeId"},
>> >     "maxShardsPerNode":"1",
>> >     "autoAddReplicas":"false"}}
>> >
>> > And the full stacktrace of the error is:
>> >
>> > null:org.apache.solr.common.SolrException:
>> > org.apache.solr.client.solrj.SolrServerException: No live SolrServers
>> > available to handle this
>> > request:[
>> http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2,
>> >
>> http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2,
>> >
>> http://solr2:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica1,
>> >
>> http://solr2:8983/solr/usa_bills_imp_2015_20160610125230_shard1_replica1]
>> >       at
>> >
>> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:375)
>> >       at
>> >
>> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
>> >       at org.apache.solr.core.SolrCore.execute(SolrCore.java:2064)
>> >       at
>> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654)
>> >       at
>> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:450)
>> >       at
>> >
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:227)
>> >       at
>> >
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
>> >       at
>> >
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
>> >       at
>> >
>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
>> >       at
>> >
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>> >       at
>> >
>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
>> >       at
>> >
>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
>> >       at
>> >
>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
>> >       at
>> >
>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
>> >       at
>> >
>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>> >       at
>> >
>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
>> >       at
>> >
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>> >       at
>> >
>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
>> >       at
>> >
>> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
>> >       at
>> >
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
>> >       at org.eclipse.jetty.server.Server.handle(Server.java:497)
>> >       at
>> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
>> >       at
>> >
>> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
>> >       at
>> >
>> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
>> >       at
>> >
>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
>> >       at
>> >
>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
>> >       at java.lang.Thread.run(Thread.java:745)
>> > Caused by: org.apache.solr.client.solrj.SolrServerException: No live
>> > SolrServers available to handle this
>> > request:[
>> http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2,
>> >
>> http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2,
>> >
>> http://solr2:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica1,
>> >
>> http://solr2:8983/solr/usa_bills_imp_2015_20160610125230_shard1_replica1]
>> >       at
>> >
>> org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:355)
>> >       at
>> >
>> org.apache.solr.handler.component.HttpShardHandlerFactory.makeLoadBalancedRequest(HttpShardHandlerFactory.java:246)
>> >       at
>> >
>> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:221)
>> >       at
>> >
>> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:183)
>> >       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> >       at
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>> >       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> >       at
>> >
>> org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:148)
>> >       at
>> >
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> >       at
>> >
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> >       ... 1 more
>> > Caused by:
>> > org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:
>> Error
>> > from server at
>> >
>> http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2:
>> > maxClauseCount is set to 102400
>> >       at
>> >
>> org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:560)
>> >       at
>> >
>> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:235)
>> >       at
>> >
>> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:227)
>> >       at
>> >
>> org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:376)
>> >       at
>> >
>> org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:344)
>> >       ... 10 more
>> >
>> > So my question is if it is the maxClauseCount triggering the "No live
>> > SolrServers" or if it is something else.
>> > I attach the Admin UI of one of the SolrServers.
>> > The zookeeper log does not throw any errors regarding to this.
>> >
>> >
>> > Thanks.
>> >
>>
>
>

Re: No live SolrServers triggered by maxclausecount

Posted by Pablo Anzorena <an...@gmail.com>.
Hi Erick, thanks for answering.

I attached the image to the body so you can see it.



Why do I need so many clauses?
It is because I have two text fields that contains in average 25 words with
a lot of typos (which I'm not cleaning it) and on top of that the index
consists of 25 million records. And we let the users make queries with
phrases, wildcards prefix and suffix. So for example the following query is
valid *q=text_field:"*ban*" AND text_field2:"foo* bar*"* (I ommited the
query parser syntax that allows this).
​

2016-06-28 2:08 GMT-03:00 Erick Erickson <er...@gmail.com>:

> That error sometimes gets reported inappropriately, as long as the
> servers are live
> you can pretty much ignore it.
>
> Attachments pretty much all get stripped by the mail server so we can't
> see your
> screen shot.
>
> Setting your max clause count to over 100K is pretty much an
> anti-pattern, what in the world
> are you doing that would require it to be that high? You haven't
> really shown us the query
> you're sending, but I bet it's amazing. Frankly, anything over the
> default of 1K is suspect.
>
> If this is some clause like id:(1 OR 2 OR 3 OR 4.......) you really
> want to try using the
> TermsQueryParser (note the 's'  as opposed to TermQueryParser (no 's').
> See:
>
> https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-TermQueryParser
>
> And if you use the TermsQueryParser, it's probably a good idea to sort
> the list of terms, it's
> more efficient.
>
> Or do a join or... because anything with that many terms will be
> rather slow to say the least.
>
> Best,
> Erick
>
>
> On Mon, Jun 27, 2016 at 8:38 AM, Pablo Anzorena <an...@gmail.com>
> wrote:
> > Hi,
> >
> > I have an ensemble zookeeper consisting of 3 machines and 2 machines with
> > solrcloud.
> >
> > With a high frequency I see in the logging:
> > No live SolrServers available to handle this
> > request:[
> http://solr2:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica1,
> > http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2
> ]
> >
> > and the state.json is:
> >
> > {"usa_bills_imp_2016_20160623000000":{
> >     "replicationFactor":"2",
> >     "shards":{"shard1":{
> >         "range":"80000000-7fffffff",
> >         "state":"active",
> >         "replicas":{
> >           "core_node1":{
> >             "core":"usa_bills_imp_2016_20160623000000_shard1_replica2",
> >             "base_url":"http://solr3:8983/solr",
> >             "node_name":"solr3:8983_solr",
> >             "state":"active"},
> >           "core_node2":{
> >             "core":"usa_bills_imp_2016_20160623000000_shard1_replica1",
> >             "base_url":"http://solr2:8983/solr",
> >             "node_name":"solr2:8983_solr",
> >             "state":"active",
> >             "leader":"true"}}}},
> >     "router":{"name":"compositeId"},
> >     "maxShardsPerNode":"1",
> >     "autoAddReplicas":"false"}}
> >
> > And the full stacktrace of the error is:
> >
> > null:org.apache.solr.common.SolrException:
> > org.apache.solr.client.solrj.SolrServerException: No live SolrServers
> > available to handle this
> > request:[
> http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2,
> > http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2
> ,
> > http://solr2:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica1
> ,
> > http://solr2:8983/solr/usa_bills_imp_2015_20160610125230_shard1_replica1
> ]
> >       at
> >
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:375)
> >       at
> >
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
> >       at org.apache.solr.core.SolrCore.execute(SolrCore.java:2064)
> >       at
> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654)
> >       at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:450)
> >       at
> >
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:227)
> >       at
> >
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
> >       at
> >
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
> >       at
> >
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
> >       at
> >
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
> >       at
> >
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
> >       at
> >
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
> >       at
> >
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
> >       at
> > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
> >       at
> >
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
> >       at
> >
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
> >       at
> >
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
> >       at
> >
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
> >       at
> >
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
> >       at
> >
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
> >       at org.eclipse.jetty.server.Server.handle(Server.java:497)
> >       at
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> >       at
> >
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
> >       at
> >
> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
> >       at
> >
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
> >       at
> >
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
> >       at java.lang.Thread.run(Thread.java:745)
> > Caused by: org.apache.solr.client.solrj.SolrServerException: No live
> > SolrServers available to handle this
> > request:[
> http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2,
> > http://solr3:8983/solr/usa_bills_imp_2016_20160623000000_shard1_replica2
> ,
> > http://solr2:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica1
> ,
> > http://solr2:8983/solr/usa_bills_imp_2015_20160610125230_shard1_replica1
> ]
> >       at
> >
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:355)
> >       at
> >
> org.apache.solr.handler.component.HttpShardHandlerFactory.makeLoadBalancedRequest(HttpShardHandlerFactory.java:246)
> >       at
> >
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:221)
> >       at
> >
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:183)
> >       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> >       at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> >       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> >       at
> >
> org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:148)
> >       at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> >       at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> >       ... 1 more
> > Caused by:
> > org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:
> Error
> > from server at
> > http://solr3:8983/solr/usa_bills_imp_2014_20160603115528_shard1_replica2
> :
> > maxClauseCount is set to 102400
> >       at
> >
> org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:560)
> >       at
> >
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:235)
> >       at
> >
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:227)
> >       at
> >
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:376)
> >       at
> >
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:344)
> >       ... 10 more
> >
> > So my question is if it is the maxClauseCount triggering the "No live
> > SolrServers" or if it is something else.
> > I attach the Admin UI of one of the SolrServers.
> > The zookeeper log does not throw any errors regarding to this.
> >
> >
> > Thanks.
> >
>