Hi Atanas,

I have a question that, how do know that how much thread does the tomcat
has?

Thanks
Aman Tandon


On Thu, Apr 10, 2014 at 7:53 PM, Erick Erickson <erickerick...@gmail.com>wrote:

> I don't expect having equal values to make a noticeable difference,
> except possibly in some corner cases. Setting them equal is mostly for
> avoiding surprises...
>
> Erick
>
> On Thu, Apr 10, 2014 at 7:17 AM, Atanas Atanasov <atanaso...@gmail.com>
> wrote:
> > Thanks for the tip,
> >
> > I already set the core properties. Now tomcat has only 27 threads after
> > start up, which is awesome.
> > Works fine, first search is not noticeably slower than before.
> > I'll put equal values for Xmx and Xms and see if there will be any
> > difference.
> >
> > Regards,
> > Atanas
> >
> >
> > On Thu, Apr 10, 2014 at 5:11 PM, Erick Erickson <erickerick...@gmail.com
> >wrote:
> >
> >> Trying to fit 1,000 cores in 6G of memory is... interesting. That's a
> >> lot of stuff in a small amount of memory. I hope these cores' indexes
> >> are tiny.
> >>
> >> The lazy-loading bit for cores has a price. The first user in will pay
> >> the warmup penalty for that core while it loads. This may or may not
> >> be noticeable but be aware of it. You may or may not want autowarming
> >> in place.
> >>
> >> You can also specify how many cores are kept in memory at one time,
> >> they go into an LRU cache and are aged out after they serve their last
> >> outstanding request.
> >>
> >> BTW, current Java practice seems to be setting Xmx and Xms to the same
> >> value, 6G in your case.
> >>
> >> Good Luck!
> >> Erick
> >>
> >> On Thu, Apr 10, 2014 at 12:14 AM, Atanas Atanasov <atanaso...@gmail.com
> >
> >> wrote:
> >> > Thanks for the quick responses,
> >> > I have allocated 1GB min and 6 GB max memory to Java. The cache
> settings
> >> > are the default ones (maybe this is a good point to start).
> >> > All cores share the same schema and config.
> >> > I'll try setting the
> >> > loadOnStartup=*false* transient=*true *options for each core and see
> what
> >> > will happen.
> >> >
> >> > Those are the exceptions from the log files:
> >> > SEVERE: Servlet.service() for servlet [default] in context with path
> >> > [/solrt] threw exception
> >> > java.lang.IllegalStateException: Cannot call sendError() after the
> >> response
> >> > has been committed
> >> > at
> >> >
> >>
> org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:450)
> >> > at
> >> >
> >>
> org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:695)
> >> > at
> >> >
> >>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:383)
> >> > at
> >> >
> >>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:158)
> >> > at
> >> >
> >>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> >> > at
> >> >
> >>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> >> > at
> >> >
> >>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
> >> > at
> >> >
> >>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
> >> > at
> >> >
> >>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
> >> > at
> >> >
> >>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
> >> > at
> >>
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
> >> > at
> >> >
> >>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
> >> > at
> >> >
> >>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
> >> > at
> >> >
> >>
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
> >> > at
> >> >
> >>
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
> >> > at
> >> >
> >>
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
> >> > at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> >> > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> >> > at java.lang.Thread.run(Unknown Source)
> >> >
> >> > AND
> >> >
> >> > SEVERE: null:ClientAbortException:  java.net.SocketException: Software
> >> > caused connection abort: socket write error
> >> > at
> >>
> org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:371)
> >> > at
> >> org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:333)
> >> > at
> >> >
> >>
> org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:101)
> >> > at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
> >> > at sun.nio.cs.StreamEncoder.flush(Unknown Source)
> >> > at java.io.OutputStreamWriter.flush(Unknown Source)
> >> > at org.apache.solr.util.FastWriter.flush(FastWriter.java:137)
> >> > at
> >> >
> >>
> org.apache.solr.servlet.SolrDispatchFilter.writeResponse(SolrDispatchFilter.java:648)
> >> > at
> >> >
> >>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:375)
> >> > at
> >> >
> >>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:158)
> >> > at
> >> >
> >>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> >> > at
> >> >
> >>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> >> > at
> >> >
> >>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
> >> > at
> >> >
> >>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
> >> > at
> >> >
> >>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
> >> > at
> >> >
> >>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
> >> > at
> >>
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
> >> > at
> >> >
> >>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
> >> > at
> >> >
> >>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
> >> > at
> >> >
> >>
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
> >> > at
> >> >
> >>
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
> >> > at
> >> >
> >>
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
> >> > at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> >> > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> >> > at java.lang.Thread.run(Unknown Source)
> >> > Caused by: java.net.SocketException: Software caused connection abort:
> >> > socket write error
> >> > at java.net.SocketOutputStream.socketWrite0(Native Method)
> >> > at java.net.SocketOutputStream.socketWrite(Unknown Source)
> >> > at java.net.SocketOutputStream.write(Unknown Source)
> >> > at
> >> >
> >>
> org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215)
> >> > at
> org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
> >> > at
> >> >
> >>
> org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:119)
> >> > at
> >> >
> >>
> org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:799)
> >> > at org.apache.coyote.Response.action(Response.java:174)
> >> > at
> >>
> org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:366)
> >> > ... 24 more
> >> >
> >> >
> >> >
> >> > On Thu, Apr 10, 2014 at 9:51 AM, Alexandre Rafalovitch
> >> > <arafa...@gmail.com>wrote:
> >> >
> >> >> Are you using all those cores at once? If not, there is a recent
> >> >> settings to allow solr to load cores on demand.
> >> >>
> >> >> If you are using them all, perhaps you need to look into splitting
> >> >> them to different machines (horizontal scaling).
> >> >>
> >> >> What about your caches? How many additional structures you have
> >> >> configured for each core? How much memory you allocated to the Java
> >> >> process. You are probably running out of memory and thrashing with a
> >> >> swap. I am not even sure Java process can access that much memory in
> >> >> one process. You might be better off running multiple Tomcat/Solr
> >> >> instances on the same machine with different subsets of cores.
> >> >>
> >> >> Regards,
> >> >>    Alex.
> >> >> P.s. This is general advice, I don't know the specific issues around
> >> >> that version of Solr/Tomcat.
> >> >> Personal website: http://www.outerthoughts.com/
> >> >> Current project: http://www.solr-start.com/ - Accelerating your Solr
> >> >> proficiency
> >> >>
> >> >>
> >> >> On Thu, Apr 10, 2014 at 1:40 PM, Atanas Atanasov <
> atanaso...@gmail.com>
> >> >> wrote:
> >> >> > Hi, guys,
> >> >> >
> >> >> > I need some help. After updating to SOLR 4.4 the tomcat process is
> >> >> > consuming about 2GBs of memory, the CPU usage is about 40% after
> the
> >> >> start
> >> >> > for about 10 minutes. However, the bigger problem is, I have about
> >> 1000
> >> >> > cores and seems that for each core a thread is created. The process
> >> has
> >> >> > more than 1000 threads and everything is extremely slow. Creating
> or
> >> >> > unloading a core even without documents takes about 20 minutes.
> >> Searching
> >> >> > is more or less good, but storing also takes a lot.
> >> >> > Is there some configuration I missed or that I did wrong? There
> aren't
> >> >> many
> >> >> > calls, I use 64 bit tomcat 7, SOLR 4.4, latest 64 bit Java. The
> >> machine
> >> >> has
> >> >> > 24 GBs of RAM, a CPU with 16 cores and is running Windows Server
> 2008
> >> R2.
> >> >> > Index is uppdated every 30 seconds/10 000 documents.
> >> >> > I haven't checked the number of threads before the update, because
> I
> >> >> didn't
> >> >> > have to, it was working just fine. Any suggestion will be highly
> >> >> > appreciated, thank you in advance.
> >> >> >
> >> >> > Regards,
> >> >> > Atanas
> >> >>
> >>
>

Reply via email to