[ http://issues.apache.org/jira/browse/DIRMINA-221?page=all ] Emmanuel Lecharny closed DIRMINA-221: -------------------------------------
The patch has been commited. > Long wait interval between requests with a single threaded client > ----------------------------------------------------------------- > > Key: DIRMINA-221 > URL: http://issues.apache.org/jira/browse/DIRMINA-221 > Project: Directory MINA > Type: Improvement > Reporter: Emmanuel Lecharny > Priority: Critical > Attachments: test-server.tgz > > Hi MINA band, > we are currently experiencing a very strange behavior in MINA. While doing > performances tests of ADS? we found that we cannot go upper than 25 search > requests per second. We stripped the server from its backend, and eventually, > Alex wrote a single client/server program unsing MINA to isolate the pb. > Vasically, we have a client which continuously send requests, and get a > result from a very simplified server. If the client has only one thread > running, there is a wall we hit ate around 25 req/s. If we use more than one > thread, suddenly this wall go up to NbThreads*25 req/s (ie, with 4 threads > requesting, we reach 100 req/s, with 10, 250 req/s, ... with 100 threads, we > have 1500 req/s). > After having put some traces into MINA, here what I found in BlockingQueue : > those two methods seems to be connected. When you call notifyAdd, then the > method waitForNewItem() wait stops. We are waiting for an average of 40ms for > each request in the waitForNewItem() method, ad I don't know which kind of > processing or synchronization generate those 40ms wait. > ... > private void notifyAdded() > { > if( waiters > 0 ) > notify(); > } > ... > ... > public synchronized void waitForNewItem() throws InterruptedException > { > waiters++; > try > { > while( super.isEmpty() ) > { > wait(); > ... > Here is a sample of time wait we have in the fetchBuffer() method, which call > the waitForNewItem() method (time is in ms) : > ... > Waited : 42 > fetchBuffer : 42 > Waited : 0 > fetchBuffer : 0 > Waited : 1 > fetchBuffer : 1 > Waited : 39 > fetchBuffer : 39 > Waited : 0 > fetchBuffer : 0 > Waited : 1 > fetchBuffer : 1 > Waited : 39 > fetchBuffer : 39 > Waited : 0 > fetchBuffer : 0 > Waited : 1 > fetchBuffer : 1 > Waited : 39 > fetchBuffer : 39 > Waited : 0 > fetchBuffer : 0 > Waited : 1 > ... > I know that the wait I get the delay is not very optimal > (System.currentTimeMillis()), but 40 ms is *very* long. > At this point, Alex and me are clueless. We have not enough understanding on > the Mina internals to explian and fix this problem - if it's a problem -, or > to configure MINA to avoid this kind of behavior. > If any of you could help us, this will be *very* appreciated, as the whole > LDAP server perfomance relies on MINA. > Thanks ! -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
