sgallagh(a)redhat.com wrote:
> Here is my solution to have a persistant uptodate local cache of
all ldap entries, so as to avoid very long delays when a user issues a command that causes
a large number of LDAP lookups, i.e. by doing a "ls -l /home":
>
> enumerate = true
> enum_cache_timeout = 86400 (every 24 hours)
> ldap_purge_cache_timeout = 0
> ldap_enumeration_refresh_timeout = 300
>
> What I would like to know, is why long delays occur when doing an "ls -l
/home". Is it because it has to write out each entry into the local database?
How many users are we talking about, and are they all represented in /home?
The initial enumeration can take up to a few minutes the first time (after that we only
update on differences). Once the full enumeration has been completed, it should take about
0.02 seconds per lookup against the local cache. On ordinary lookups, there are no writes
going on. Writes to the cache only occur on cache misses.
"ls -l /home" is fast after enumeration. But if I allow the enum cache
to time out, then "ls -l /home" take minutes. We have 430 directories.
I get around this problem, by setting the cache timeout to be very
long. However, it appears that using this configuration, both sssd_nss
and sssd_be are constantly growing in size. I.e., here are the memory
size after about 3 days of use. The resident memory has grown from
about 21m to over 200m. The ldap refresh (every 5 minutes), appears to
be constantly adding to the cache. Or maybe there is a problem with my
configuration that is causing this?
10468 root 20 0 402m 236m 14m S 0.7 1.5 2:50.74
sssd_nss
10467 root 20 0 424m 222m 8164 S 0.0 1.4 10:20.20 sssd_be
Thanks. - Mark