Hi,
I am seeing very slow responses while using ldap_search_ext() and ldap_result(). I have explained my application below. Kindly let me know if you see any problems/clues.
I have written a simple application which reads a file and does LDAP search for all entities in the file. I am doing a simple bind with the LDAP server.
I have 2 threads and 2 queues namely, LDAP Search queue and LDAP result queue.
- Thread 1 reads all the entities from LDAP Search queue, sends out LDAP search requests for those entities and puts them into LDAP result queue.
- Thread 2 reads all the entities from LDAP Result queue and checks for search results for those entities.
These 2 threads do these tasks every 1 second.
Since I don't want to overload the LDAP server I have programmed a
constraint of a maximum of 20 outstanding LDAP searches that haven't got
a result yet.
Successful ldap_result() seems to be taking a long time. I keep getting LDAP_TIMEOUT errors. But i do get the result eventually without any retransmissions. But after a long time.
When I capture the LDAP packets, the results seems to coming in pretty quick. But still ldap_result returns a LDAP_TIMEOUT error. Why should ldap_result() return a timeout in this case?
Note that I am using LDAP_MSG_ONE in ldap_result. And I am using a timeout of 0 - I want to poll for the result and not actually block.
I have turned OFF LDAP_OPT_REFERRALS on client side. (But still not able to figure out how to prevent Active Directory 2008 from sending out referrals).
My test file contains 25 entities and I want to query the LDAP server for these 25 entities.
This is a simplified form of my log:
At 0 seconds:
LDAP Search thread:
25 more LDAP searches pending. 0 LDAP Search waiting for results
Sent out 20 LDAP Search Requests.
Trigger to start LDAP Result thread after 1 second.
5 more LDAP searches pending. Wait for 1 second before sending these out.
At 1 seconds:
LDAP Result thread:
20 LDAP Search results pending.
Got 1 LDAP results.
19 LDAP Search results still pending. Try again after 1 second.
LDAP Search Thread:
5 more LDAP Searches pending. 19 LDAP Search waiting for results.
Sent out 1 LDAP Search Requests.
4 more LDAP searches pending. Wait for 1 second before sending these out.
At 2 seconds:
LDAP Result thread:
20 LDAP Search results pending.
Got 5 LDAP results.
15 LDAP Search results still pending. Try again after 1 second.
LDAP Search Thread:
4 more LDAP Searches pending. 15 LDAP Search waiting for results.
Sent out 4 LDAP Search Requests.
0 LDAP Search pending. Stopping LDAP Search thread.
At 3 seconds:
LDAP Result thread:
19 LDAP Search results pending.
Got 4 LDAP results.
15 LDAP Search results still pending. Try again after 1 second.
At 4 seconds:
LDAP Result thread:
15 LDAP Search results pending.
Got 4 LDAP results.
11 LDAP Search results still pending. Try again after 1 second.
At 5 seconds:
LDAP Result thread:
11 LDAP Search results pending.
Got 3 LDAP results.
8 LDAP Search results still pending. Try again after 1 second.
At 6 seconds:
LDAP Result thread:
8 LDAP Search results pending.
Got 2 LDAP results.
6 LDAP Search results still pending. Try again after 1 second.
At 7 seconds:
LDAP Result thread:
6 LDAP Search results pending.
Got 1 LDAP results.
5 LDAP Search results still pending. Try again after 1 second.
At 8 seconds:
LDAP Result thread:
5 LDAP Search results pending.
Got 2 LDAP results.
3 LDAP Search results still pending. Try again after 1 second.
At 8 seconds:
LDAP Result thread:
3 LDAP Search results pending.
Got 1 LDAP results.
2 LDAP Search results still pending. Try again after 1 second.
At 9 seconds:
LDAP Result thread:
2 LDAP Search results pending.
Got 0 LDAP results.
2 LDAP Search results still pending. Try again after 1 second.
At 10 seconds:
LDAP Result thread:
2 LDAP Search results pending.
Got 1 LDAP results.
1 LDAP Search results still pending. Try again after 1 second.
At 11 seconds:
LDAP Result thread:
1 LDAP Search results pending.
Got 0 LDAP results.
1 LDAP Search results still pending. Try again after 1 second.
At 12 seconds:
LDAP Result thread:
1 LDAP Search results pending.
Got 1 LDAP results.
0 LDAP Search Results pending. Stopping LDAP Result thread.
Any help/clues is much appreciated.
Regards,
Shankar