mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DIRMINA-221) Long wait interval between requests with a single threaded client
Date Mon, 19 Jun 2006 05:12:31 GMT
    [ http://issues.apache.org/jira/browse/DIRMINA-221?page=comments#action_12416713 ] 

Emmanuel Lecharny commented on DIRMINA-221:
-------------------------------------------

I was plain wrong when thinking that we should have synchronous req/resp. The RFC states exactly
the opposite :
"Although servers are required to return responses whenever such
   responses are defined in the protocol, there is no requirement for
   synchronous behavior on the part of either clients or servers.
   Requests and responses for multiple operations generally may be
   exchanged between a client and server in any order.  If required,
   synchronous behavior may be controlled by client applications."

So we *must* queue requests.

> 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


Mime
View raw message