October 29, 2019 at 8:58 pm #26973
We have roughly 35,000 users in our Directory.
There is an application that uses the following query to output all users for reporting: “(&(givenName=*)(objectClass=inetorgperson))” . While “givenName” attribute is indexed, it hit a limit of index-entry-limit, which is 4,000 by default.
It takes about 300 seconds to finish. While the query runs, LDAP becomes very slow, and it causes problems to the other clients doing simple searches that normally come back within few milliseconds, but at that time take 30-40 second to finish.
Here is the output of the debugsearchindex:
debugsearchindex: filter=(&(givenName=*)[INDEX:givenName.presence][NOT-INDEXED][INDEX:givenName.presence][LIMIT-EXCEEDED](objectClass=inetorgperson)[INDEX:objectClass.equality][LIMIT-EXCEEDED])[NOT-INDEXED] scope=sub[NOT-INDEXED] final=[NOT-INDEXED]
What can be done to improve this query, but most importantly avoid having any performance hit on the other clients?
All articles suggest not to increase index-entry-limit.
GeneOctober 29, 2019 at 9:32 pm #26974LudoModerator
Out of the 35000 users, how many entries have a givenName ? Most likely all of the users.
So that search is slow not because it’s unindexed, but because it returns all 35000 users.
Indexing the givenName attribute, will not make the query faster. But increasing the index-entry-limit could impact performance of updates and possibly other queries.October 29, 2019 at 9:35 pm #26975
Yes, that’s correct – all of the users.
So, what would be recommended options for this case?
Thank you.November 7, 2019 at 4:15 pm #27053
Does anyone have any suggestions on what to do in our case?
You must be logged in to reply to this topic.