[ http://issues.apache.org/jira/browse/DIRMINA-221?page=comments#action_12417418 ]
Trustin Lee commented on DIRMINA-221: ------------------------------------- Thank you, Emmanuel, but you didn't close the issue. You are the reporter, so you're the only one who can close this issue. Please change the status of this issue from 'Resolved' to 'Closed'. > 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
