On 11/04/2013 10:46 AM, Jan Tomasek wrote:
On 11/04/2013 05:22 PM, Rich Megginson wrote:
On 11/04/2013 09:08 AM, Jan Tomasek wrote:
On 11/04/2013 05:04 PM, Rich Megginson wrote:

Does the script open a connection to the same server it is being called
from?
Yes.
So this is a case of self-deadlock?  I don't understand.  What is it
exactly that you expect will happen?
If there is one connection it works. If there is 29 parallel bind
requests it works. If there is 30 and more it immediately hang. I'm
seeking why 29 is ok and 30 is bad.

In other words deadlock happens only if I run 30+ parallel connections.

The server by default has 30 worker threads.  This is the (hidden) nsslapd-threadnumber attribute in cn=config.  30 is probably much too large for most deployments, which can get by with 2 threads per processor.

I do this:

for i in `seq 1 30`
do
time ldapsearch -LLL -H ldaps://xxx.cesnet.cz -x \
  -b dc=perun-shadow,dc=cesnet,dc=cz \
  -D "uid=semik$i,ou=People,dc=perun-shadow,dc=cesnet,dc=cz" \
  -w 'zadek' -s base dn &
done 
and 389 is immediately deadlocked. That should not happen I think.

The script itself binds anonymously so it should not go into PAM.

It doesn't, but because all of the other worker threads in the server are waiting on the lock, there is no worker thread to service the request.


That script was just proof of concept. Maybe I should explain what I
want to do in other thread.
Yes, please.



--
389 users mailing list
389-users@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/389-users