Me neither. Please, Mark, can you tell us how? 2013/3/15 Jack Park <jackp...@topicquests.org>
> Is there a document that tells how to create multiple threads? Search > returns many hits which orbit this idea, but I haven't spotted one > which tells how. > > Thanks > Jack > > On Fri, Mar 15, 2013 at 1:01 PM, Mark Miller <markrmil...@gmail.com> > wrote: > > You def have to use multiple threads with it for it to be fast, but 3 or > 4 docs a second still sounds absurdly slow. > > > > - Mark > > > > On Mar 15, 2013, at 2:58 PM, Luis Cappa Banda <luisca...@gmail.com> > wrote: > > > >> And up! :-) > >> > >> I´ve been wondering if using CloudSolrServer has something to do here. > Does > >> it have a bad performance when a CloudSolrServer singletong receives > >> multiple queries? Is it recommended to have a CloudSolrServer instances > >> list and select one of them with a Round Robin criteria? > >> > >> > >> > >> 2013/3/14 Luis Cappa Banda <luisca...@gmail.com> > >> > >>> Hello! > >>> > >>> Thanks a lot, Erick! I've attached some stack traces during a normal > >>> 'engine' running. > >>> > >>> Cheers, > >>> > >>> - Luis Cappa > >>> > >>> > >>> 2013/3/13 Erick Erickson <erickerick...@gmail.com> > >>> > >>>> Stack traces.. > >>>> > >>>> First, > >>>> jps -l > >>>> > >>>> that will give you a the process IDs of your running Java processes. > Then: > >>>> > >>>> jstack <pid from above> > >>>> > >>>> Usually I pipe the output from jstack into a text file... > >>>> > >>>> Best > >>>> Erick > >>>> > >>>> > >>>> On Wed, Mar 13, 2013 at 1:48 PM, Luis Cappa Banda < > luisca...@gmail.com > >>>>> wrote: > >>>> > >>>>> Uhm, how can I do that... 'cleanly'? I know that with JConsole it´s > >>>> posible > >>>>> to output this traces, but with a .war application built on top of > >>>> Spring I > >>>>> don´t know how can I do that. In any case, here is my CloudSolrServer > >>>>> wrapper that is used by other classes. There is no sync method or > piece > >>>> of > >>>>> code: > >>>>> > >>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > >>>> - - > >>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > >>>>> > >>>>> *public class BinaryLBHttpSolrServer extends LBHttpSolrServer {* > >>>>> > >>>>> private static final long serialVersionUID = 3905956120804659445L; > >>>>> public BinaryLBHttpSolrServer(String[] endpoints) throws > >>>>> MalformedURLException { > >>>>> super(endpoints); > >>>>> } > >>>>> > >>>>> @Override > >>>>> protected HttpSolrServer makeServer(String server) throws > >>>>> MalformedURLException { > >>>>> HttpSolrServer solrServer = super.makeServer(server); > >>>>> solrServer.setRequestWriter(new BinaryRequestWriter()); > >>>>> return solrServer; > >>>>> } > >>>>> } > >>>>> > >>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > >>>> - - > >>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > >>>>> > >>>>> *public class CloudSolrHttpServerImpl implements CloudSolrHttpServer > {* > >>>>> private CloudSolrServer cloudSolrServer; > >>>>> > >>>>> private Logger log = Logger.getLogger(CloudSolrHttpServerImpl.class); > >>>>> > >>>>> public CloudSolrHttpServerImpl(String zookeeperEndpoints, String[] > >>>>> endpoints, int clientTimeout, > >>>>> int connectTimeout, String cloudCollection) { > >>>>> try { > >>>>> BinaryLBHttpSolrServer lbSolrServer = new *BinaryLBHttpSolrServer* > >>>>> (endpoints); > >>>>> this.cloudSolrServer = new CloudSolrServer(zookeeperEndpoints, > >>>>> lbSolrServer); > >>>>> this.cloudSolrServer.setZkConnectTimeout(connectTimeout); > >>>>> this.cloudSolrServer.setZkClientTimeout(clientTimeout); > >>>>> this.cloudSolrServer.setDefaultCollection(cloudCollection); > >>>>> } catch (MalformedURLException e) { > >>>>> log.error(e); > >>>>> } > >>>>> } > >>>>> > >>>>> @Override > >>>>> public QueryResponse *search*(SolrQuery query) throws > >>>> SolrServerException { > >>>>> return cloudSolrServer.query(query, METHOD.POST); > >>>>> } > >>>>> > >>>>> @Override > >>>>> public boolean *index*(DocumentBean user) { > >>>>> boolean indexed = false; > >>>>> int retries = 0; > >>>>> do { > >>>>> indexed = addBean(user); > >>>>> retries++; > >>>>> } while(!indexed && retries<4); > >>>>> return indexed; > >>>>> } > >>>>> @Override > >>>>> public boolean *update*(SolrInputDocument updateDoc) { > >>>>> boolean update = false; > >>>>> int retries = 0; > >>>>> > >>>>> do { > >>>>> update = addSolrInputDocument(updateDoc); > >>>>> retries++; > >>>>> } while(!update && retries<4); > >>>>> return update; > >>>>> } > >>>>> @Override > >>>>> public void commit() { > >>>>> try { > >>>>> cloudSolrServer.commit(); > >>>>> } catch (SolrServerException e) { > >>>>> log.error(e); > >>>>> } catch (IOException e) { > >>>>> log.error(e); > >>>>> } > >>>>> } > >>>>> > >>>>> @Override > >>>>> public boolean *delete*(String ... ids) { > >>>>> boolean deleted = false; > >>>>> List<String> idList = Arrays.asList(ids); > >>>>> try { > >>>>> this.cloudSolrServer.deleteById(idList); > >>>>> this.cloudSolrServer.commit(true, true); > >>>>> deleted = true; > >>>>> > >>>>> } catch (SolrServerException e) { > >>>>> log.error(e); > >>>>> > >>>>> } catch (IOException e) { > >>>>> log.error(e); > >>>>> } > >>>>> return deleted; > >>>>> } > >>>>> > >>>>> @Override > >>>>> public void *optimize*() { > >>>>> try { > >>>>> this.cloudSolrServer.optimize(); > >>>>> } catch (SolrServerException e) { > >>>>> log.error(e); > >>>>> } catch (IOException e) { > >>>>> log.error(e); > >>>>> } > >>>>> } > >>>>> /* > >>>>> * ******************** > >>>>> * Getters & setters * > >>>>> * ******************** > >>>>> * */ > >>>>> public CloudSolrServer getSolrServer() { > >>>>> return cloudSolrServer; > >>>>> } > >>>>> > >>>>> public void setSolrServer(CloudSolrServer solrServer) { > >>>>> this.cloudSolrServer = solrServer; > >>>>> } > >>>>> > >>>>> private boolean addBean(DocumentBean user) { > >>>>> boolean added = false; > >>>>> try { > >>>>> this.cloudSolrServer.addBean(user, 100); > >>>>> this.commit(); > >>>>> > >>>>> } catch (IOException e) { > >>>>> log.error(e); > >>>>> > >>>>> } catch (SolrServerException e) { > >>>>> log.error(e); > >>>>> }catch(SolrException e) { > >>>>> log.error(e); > >>>>> } > >>>>> return added; > >>>>> } > >>>>> private boolean addSolrInputDocument(SolrInputDocument updateDoc) { > >>>>> boolean added = false; > >>>>> try { > >>>>> this.cloudSolrServer.add(updateDoc, 100); > >>>>> this.commit(); > >>>>> added = true; > >>>>> } catch (IOException e) { > >>>>> log.error(e); > >>>>> > >>>>> } catch (SolrServerException e) { > >>>>> log.error(e); > >>>>> }catch(SolrException e) { > >>>>> log.error(e); > >>>>> } > >>>>> return added; > >>>>> } > >>>>> } > >>>>> > >>>>> Thank you very much, Mark. > >>>>> > >>>>> > >>>>> - Luis Cappa > >>>>> > >>>>> > >>>>> > >>>>> And > >>>>> 2013/3/13 Mark Miller <markrmil...@gmail.com> > >>>>> > >>>>>> > >>>>>> Could you capture some thread stack traces in the 'engine' and see > if > >>>>>> there are any blocking methods? > >>>>>> > >>>>>> - Mark > >>>>>> > >>>>>> On Mar 13, 2013, at 1:34 PM, Luis Cappa Banda <luisca...@gmail.com> > >>>>> wrote: > >>>>>> > >>>>>>> Just one correction: > >>>>>>> > >>>>>>> When I said: > >>>>>>> > >>>>>>> - I´ve checked SolrCloud via Solr Admin interface and it´s OK: > >>>>>>> everything is green, and I cant execute queries directly into > >>>> Solr. > >>>>>>> > >>>>>>> I mean: > >>>>>>> > >>>>>>> > >>>>>>> - I´ve checked SolrCloud via Solr Admin interface and it´s OK: > >>>>>>> everything is green, and *I can* execute queries directly into > >>>> Solr. > >>>>>>> > >>>>>>> > >>>>>>> Thanks! > >>>>>>> > >>>>>>> > >>>>>>> - Luis Cappa > >>>>>>> > >>>>>>> > >>>>>>> 2013/3/13 Luis Cappa Banda <luisca...@gmail.com> > >>>>>>> > >>>>>>>> Hello, guys! > >>>>>>>> > >>>>>>>> I´ve been experiencing some annoying behavior with my current > >>>>> production > >>>>>>>> scenario. Here is the snapshot: > >>>>>>>> > >>>>>>>> > >>>>>>>> - SolrCloud: 2 shards > >>>>>>>> - Zookeeper ensemble: 3 nodes in *different machines *(most of > >>>> the > >>>>>>>> tutorials installs 3 Zookeeper nodes in the same machine). > >>>>>>>> - This is the zoo.cfg from every > >>>>>>>> > >>>>>>>> tickTime=2000 // I´ve also tried with 60000 > >>>>>>>> > >>>>>>>> initLimit=10 > >>>>>>>> > >>>>>>>> syncLimit=5 > >>>>>>>> > >>>>>>>> dataDir=/var/lib/zookeeper > >>>>>>>> > >>>>>>>> clientPort=9000 > >>>>>>>> > >>>>>>>> server.1=zoohost1:2888:3888 > >>>>>>>> > >>>>>>>> server.2=zoohost1:2888:3888 > >>>>>>>> > >>>>>>>> server.3=zoohost1:2888:3888 > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> - I´ve developed a Java Application with a REST API (let´s call > >>>> it * > >>>>>>>> engine*) that dispatches queries into SolrCloud. It´s a wrapper > >>>>> around > >>>>>>>> CloudSolrServer, so it´s mandatory to specify some Zookeeper > >>>>>> configuration > >>>>>>>> params too. They are loaded dynamically when the application is > >>>>>> deployed in > >>>>>>>> a Tomcat server, but the current values that I´m using are as > >>>>> follows: > >>>>>>>> > >>>>>>>> cloudSolrServer.*setZkConnectTimeout(60000)* > >>>>>>>> > >>>>>>>> cloudSolrServer.*setZkClientTimeout(60000)* > >>>>>>>> * > >>>>>>>> * > >>>>>>>> * > >>>>>>>> * > >>>>>>>> > >>>>>>>> *THE PROBLEM* > >>>>>>>> * > >>>>>>>> * > >>>>>>>> Everything goes OK, but after two days more or less (yes, I´ve > >>>> checked > >>>>>>>> that this behavior occurrs periodically, more or less) the *engine > >>>>>> blocks > >>>>>>>> * and cannot dispatch any query to SolrCloud. > >>>>>>>> > >>>>>>>> - The *engine *log only outputs "updating Zookeeper..." one last > >>>>> time, > >>>>>>>> but never updates. > >>>>>>>> - I´ve checked SolrCloud via Solr Admin interface and it´s OK: > >>>>>>>> everything is green, and I cant execute queries directly into > >>>> Solr. > >>>>>>>> - So then Solr appears to be OK, so the next step is to restart > >>>>>> *engine > >>>>>>>> but *it again appears "updating Zookeeper...". Unfortunately > >>>> switch > >>>>>>>> off + switch on doesn´t work here, :-( > >>>>>>>> - I´ve checked too Zookeeper logs and it appears some connection > >>>> log > >>>>>>>> outs, but the ensemble appears to be OK too. > >>>>>>>> - *The end: *If I restart Zookeeper one by one, and I restart > >>>>>>>> SolrCloud, plus I restart the engine, the problem is solved. I´m > >>>>> using > >>>>>>>> Amazon AWS as hostage, so I discard connection problems between > >>>>>> instances. > >>>>>>>> > >>>>>>>> > >>>>>>>> Does anyone experienced something similar? Can anybody shed some > >>>> light > >>>>>> on > >>>>>>>> this problem? > >>>>>>>> > >>>>>>>> Thank you very much. > >>>>>>>> > >>>>>>>> > >>>>>>>> Regards, > >>>>>>>> > >>>>>>>> > >>>>>>>> - Luis Cappa > >>>>>>>> > >>>>>> > >>>>>> > >>>>> > >>>> > >>> > >>> > > >