[Dovecot] LDAP timeout
Hi,
we recently hit an issue where one (of the three configured) LDAP servers dropped an index on an attribute due to a misconfiguration, which caused all/most queries for passdb to take a very long time (several 10s of seconds).
The other servers would have been fine, but it seems like Dovecot does either not set a timelimit on the query or uses a very high one. I could not find any place to control that either.
Is there any knob to tune the LDAP timeout?
Bernhard
On Mon, 2011-06-27 at 12:11 +0000, Bernhard Schmidt wrote:
Hi,
we recently hit an issue where one (of the three configured) LDAP servers dropped an index on an attribute due to a misconfiguration, which caused all/most queries for passdb to take a very long time (several 10s of seconds).
The other servers would have been fine, but it seems like Dovecot does either not set a timelimit on the query or uses a very high one. I could not find any place to control that either.
Is there any knob to tune the LDAP timeout?
Fallbacking to another LDAP server is done by OpenLDAP internally. So what would be needed is either a) OpenLDAP to itself figure out that queries are running too slowly and see if another server is faster, or b) Dovecot figure that out itself and force OpenLDAP to switch to another server.
I don't know if either of them is possible with OpenLDAP API as it is. I doubt it.
Oh, also possibility c) Have Dovecot manage all the different LDAP server connections instead of OpenLDAP. Probably what I will have to do eventually anyway. That would allow also load balancing by actually using multiple connections, similar to how SQL code does it now. But yeah, that does remind me that I probably should change the SQL load balancing code to look at the query times.
Hi,
Fallbacking to another LDAP server is done by OpenLDAP internally. So what would be needed is either a) OpenLDAP to itself figure out that queries are running too slowly and see if another server is faster, or b) Dovecot figure that out itself and force OpenLDAP to switch to another server.
I don't know if either of them is possible with OpenLDAP API as it is. I doubt it.
You can set a timelimit for a search, but I'm not exactly sure what happens when you specified multiple servers. Maybe the query gets restarted on the next server, maybe it fails. Still doing that (with logging) would be better than hanging there for several minutes.
If it completely aborts the query, a workaround would be to use more than one ldap passdb with one server each, no?
Bernhard
participants (2)
-
Bernhard Schmidt
-
Timo Sirainen