# HG changeset patch # User Kim Alvefur # Date 1593709439 -7200 # Node ID b5e7f4d533e21e2b6c46ca85e31869c1772d51d0 # Parent df3ee12acd8cfd278854cab204e701de5a8857c1 mod_storage_sql: Measure hits/misses on the item count cache A cache miss can be expensive so having numbers on how often this occurs may be valuable. diff -r df3ee12acd8c -r b5e7f4d533e2 plugins/mod_storage_sql.lua --- a/plugins/mod_storage_sql.lua Tue Jun 30 18:31:48 2020 +0200 +++ b/plugins/mod_storage_sql.lua Thu Jul 02 19:03:59 2020 +0200 @@ -153,6 +153,9 @@ local archive_item_limit = module:get_option_number("storage_archive_item_limit"); local archive_item_count_cache = cache.new(module:get_option("storage_archive_item_limit_cache_size", 1000)); +local item_count_cache_hit = module:measure("item_count_cache_hit", "rate"); +local item_count_cache_miss = module:measure("item_count_cache_miss", "rate") + -- luacheck: ignore 512 431/user 431/store 431/err local map_store = {}; map_store.__index = map_store; @@ -286,6 +289,7 @@ local cache_key = jid_join(username, host, store); local item_count = archive_item_count_cache:get(cache_key); if not item_count then + item_count_cache_miss(); local ok, ret = engine:transaction(function() local count_sql = [[ SELECT COUNT(*) FROM "prosodyarchive" @@ -303,6 +307,8 @@ return nil, "Failure while checking quota"; end archive_item_count_cache:set(cache_key, item_count); + else + item_count_cache_hit(); end if archive_item_limit then @@ -408,6 +414,7 @@ local user,store = username,self.store; local cache_key = jid_join(username, host, self.store); local total = archive_item_count_cache:get(cache_key); + (total and item_count_cache_hit or item_count_cache_miss)(); if total ~= nil and query.limit == 0 and query.start == nil and query.with == nil and query["end"] == nil and query.key == nil then return noop, total; end