Le 12/30/13 7:57 PM, Marc Boorshtein a écrit :
>>
>>
>> I have done some benchmarks 6 months ago with 5 injectors sending as
>> manu search request as possible to the server. I won't say it's enough
>> to guarantee that the server is stable enough...
>>
> Performance testing is an art, not a science :-)
Or maybe science-fiction...
>
>
>> This is typical of a client hving closed the connection just after
>> having sent a search request. It sounds weird, but it's a possibility :
>>
>> public final void handleMessage( IoSession session, T message )
>> throws Exception
>> {
>> LdapSession ldapSession =
>> ldapServer.getLdapSessionManager().getLdapSession( session );
>>
>> if ( ldapSession == null )
>> {
>> // in some cases the session is becoming null though the
>> client is sending the UnbindRequest
>> // before closing
>> LOG.info( "ignoring the message {} received from null
>> session", message );
>> return;
>> }
>>
>>
> OK, so like if there was a timeout on the client end? I send the request,
> but it takes too long so it closes the connection before the search is done
> being processed?
That's an option. We added this check to avoid such situation :
https://issues.apache.org/jira/browse/DIRSERVER-1404
>
>
>
>>
>> The BIND operation is different from a session. A LdapSession is
>> associated with a physical connection, while the Bind operation is just
>> a message sent by the user. For some reason, (the protocol mandate it),
>> you have to accept concurrent operations for a single session, like for
>> instance an Abandon request should be processed even if a search request
>> is being processed.
>>
>> Thus we have more than one thread processing the incoming requests, and
>> in some cases, processing a Unbind request might be unliky and being
>> done on a already closed connection.
>>
>
> Is there a way to tell if requests are coming in on one connection or over
> multiple connections?
A request always come from one single conection. It's not possible that
2 requests for the same session are arriving from 2 different
connections. What happens internally is that requests are processed by a
pool of thread, which makes it possibe for 2 requests to be processed in
parallel.
>
>>> Are there any guide lines for how to configure apacheds? ie the number
>> of
>>> threads?
>> You can increase the number of processing thread in the transport layer
>> :
>>
>> http://directory.apache.org/apacheds/advanced-ug/2-server-config.html#transports
>> (check the ads-transportNbThreads paramenter).
>>
>>
> Great, do you have any guidance on how to set these options? ie is it
> better to have n threads where n is the number of cores/processors? Whats
> the relationship between ads-transportBackLog and memory/processing power?
As a rule of thumb, nb of threads = nb of processors/core +1. That
should be enough.
>
>
>
>> Now, if you can insolate some problem, we would be happy to check what's
>> going on !
>>
>>
> Sure. Right now I'm just trying to understand what the logs are telling
> me. MyVD's performance use case is probably very different from "straight"
> apacheds. These tests seem to take between 300ms and 1.5s for
> authentication (this isn't 1-1 with a single LDAP operation. Its actually
> several.) where as ApacheDS the data is all local so the timings are
> different.
>
>
>
>> One last thing : we will conduct some load tests very soon.
>>
>>
> We'd be happy to donate compute cycles on ec2 and assist in the testing
> process however we can!
What I would be interested in is to run the exact tests you are running.
But that will be no sooner than next week, as I'm on a little trip for
the next 2 days (and my brain might be a bit too fried in the 2 or 3
days after those two days to be useful at all...)
Have a happy new year in the mean time !
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com