Hi John, sounds like this bug in NIO:
http://jira.codehaus.org/browse/JETTY-937 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6403933 I think recent versions of jetty work around this bug, or maybe try the non-NIO socket connector Kent On Tue, Dec 7, 2010 at 9:10 AM, John Russell <jjruss...@gmail.com> wrote: > Hi, > I'm using solr and have been load testing it for around 4 days. We use the > solrj client to communicate with a separate jetty based solr process on the > same box. > > After a few days solr's CPU% is now consistently at or above 100% (multiple > processors available) and the application using it is mostly not responding > because it times out talking to solr. I connected visual VM to the solr JVM > and found that out of the many btpool-# threads there are 4 that are pretty > much stuck in the running state 100% of the time. Their names are > > btpool0-1-Acceptor1 SelectChannelConnector @0.0.0.0:9983 > btpool0-2-Acceptor2 SelectChannelConnector @0.0.0.0:9983 > btpool0-3-Acceptor3 SelectChannelConnector @0.0.0.0:9983 > btpool0-9-Acceptor0 SelectChannelConnector @0.0.0.0:9983 > > > > The stacks are all the same > > "btpool0-2 - Acceptor2 SelectChannelConnector @ 0.0.0.0:9983" - Thread > t...@27 > java.lang.Thread.State: RUNNABLE > at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) > at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:210) > at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > - locked <106a644> (a sun.nio.ch.Util$1) > - locked <18dd381> (a java.util.Collections$UnmodifiableSet) > - locked <38d07d> (a sun.nio.ch.EPollSelectorImpl) > at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > at > org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:419) > at > org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:169) > at > org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124) > at > org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:516) > at > org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) > > Locked ownable synchronizers: > - None > > All of the other idle thread pool threads are just waiting for new tasks. > The active threads never seem to change, its always these 4. The selector > channel appears to be in the jetty code, receiving requests from our other > process through the solrj client. > > Does anyone know what this might mean or how to address it? Are these > running all the time because they are blocked on IO so not actually > consuming CPU? If so, what else might be? Is there a better way to figure > out what is pinning the CPU? > > Some more info that might be useful. > > 32 bit machine ( I know, I know) > 2.7GB of RAM for solr process ~2.5 is "used" > According to visual VM around 25% of CPU time is spent in GC with the rest > in application. > > Thanks for the help. > > John >