Mercurial > dovecot > original-hg > dovecot-1.2
changeset 3415:4e36a99268dd HEAD
Count cache hits and misses, report them on SIGUSR2.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 08 Jun 2005 18:45:41 +0300 |
parents | c2497d4c60c9 |
children | 27312b7941e9 |
files | src/auth/auth-cache.c |
diffstat | 1 files changed, 20 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/auth-cache.c Wed Jun 08 16:37:17 2005 +0300 +++ b/src/auth/auth-cache.c Wed Jun 08 18:45:41 2005 +0300 @@ -24,7 +24,9 @@ size_t size_left; unsigned int ttl_secs; - unsigned int hup_count; + unsigned int hup_count, usr2_count; + + unsigned int hit_count, miss_count; }; char *auth_cache_parse_key(const char *query) @@ -130,6 +132,7 @@ { string_t *str; struct cache_node *node; + unsigned int total_count; *expired_r = FALSE; @@ -140,13 +143,28 @@ return NULL; } + if (cache->usr2_count != lib_signal_usr2_count) { + cache->usr2_count = lib_signal_usr2_count; + + total_count = cache->hit_count + cache->miss_count; + i_info("Authentication cache hits %u/%u (%u%%)", + cache->hit_count, total_count, + cache->hit_count * 100 / total_count); + + /* reset hit counter */ + cache->hit_count = cache->miss_count = 0; + } + str = t_str_new(256); var_expand(str, key, auth_request_get_var_expand_table(request, str_escape)); node = hash_lookup(cache->hash, str_c(str)); - if (node == NULL) + if (node == NULL) { + cache->miss_count++; return NULL; + } + cache->hit_count++; if (node->created < time(NULL) - (time_t)cache->ttl_secs) { /* TTL expired */