(unsigned long)s->svr.num_queries_cookie_client)) return 0;
if(!ssl_printf(ssl, "%s.num.queries_cookie_invalid"SQ"%lu\n", nm,
(unsigned long)s->svr.num_queries_cookie_invalid)) return 0;
+ if(!ssl_printf(ssl, "%s.num.queries_discard_timeout"SQ"%lu\n", nm,
+ (unsigned long)s->svr.num_queries_discard_timeout)) return 0;
+ if(!ssl_printf(ssl, "%s.num.queries_wait_limit"SQ"%lu\n", nm,
+ (unsigned long)s->svr.num_queries_wait_limit)) return 0;
if(!ssl_printf(ssl, "%s.num.cachehits"SQ"%lu\n", nm,
(unsigned long)(s->svr.num_queries
- s->svr.num_queries_missed_cache))) return 0;
s->svr.rpz_action[i] += (long long)worker->env.mesh->rpz_action[i];
timehist_export(worker->env.mesh->histogram, s->svr.hist,
NUM_BUCKETS_HIST);
+ s->svr.num_queries_discard_timeout +=
+ (long long)worker->env.mesh->num_queries_discard_timeout;
+ s->svr.num_queries_wait_limit +=
+ (long long)worker->env.mesh->num_queries_wait_limit;
/* values from outside network */
s->svr.unwanted_replies = (long long)worker->back->unwanted_replies;
s->svr.qtcp_outgoing = (long long)worker->back->num_tcp_outgoing;
total->svr.num_queries_cookie_valid += a->svr.num_queries_cookie_valid;
total->svr.num_queries_cookie_client += a->svr.num_queries_cookie_client;
total->svr.num_queries_cookie_invalid += a->svr.num_queries_cookie_invalid;
+ total->svr.num_queries_discard_timeout +=
+ a->svr.num_queries_discard_timeout;
+ total->svr.num_queries_wait_limit += a->svr.num_queries_wait_limit;
total->svr.num_queries_missed_cache += a->svr.num_queries_missed_cache;
total->svr.num_queries_prefetch += a->svr.num_queries_prefetch;
total->svr.num_queries_timed_out += a->svr.num_queries_timed_out;
.I threadX.num.queries_cookie_invalid
number of queries with an invalid DNS Cookie by thread
.TP
+.I threadX.num.queries_discard_timeout
+number of queries removed due to discard-timeout by thread
+.TP
+.I threadX.num.queries_wait_limit
+number of queries removed due to wait-limit by thread
+.TP
.I threadX.num.cachehits
number of queries that were successfully answered using a cache lookup
.TP
.I total.num.queries_cookie_invalid
summed over threads.
.TP
+.I total.num.queries_discard_timeout
+summed over threads.
+.TP
+.I total.num.queries_wait_limit
+summed over threads.
+.TP
.I total.num.cachehits
summed over threads.
.TP
long long mem_quic;
/** number of queries over (DNS over) QUIC */
long long qquic;
+ /** number of queries removed due to discard-timeout */
+ long long num_queries_discard_timeout;
+ /** number of queries removed due to wait-limit */
+ long long num_queries_wait_limit;
};
/**
mesh->stats_dropped = 0;
mesh->ans_expired = 0;
mesh->ans_cachedb = 0;
+ mesh->num_queries_discard_timeout = 0;
+ mesh->num_queries_wait_limit = 0;
mesh->max_reply_states = env->cfg->num_queries_per_thread;
mesh->max_forever_states = (mesh->max_reply_states+1)/2;
#ifndef S_SPLINT_S
verbose(VERB_ALGO, "Too many queries waiting from the IP. "
"dropping incoming query.");
comm_point_drop_reply(rep);
- mesh->stats_dropped++;
+ mesh->num_queries_wait_limit++;
return;
}
if(!unique)
http2_stream_remove_mesh_state(r->h2_stream);
comm_point_drop_reply(&r->query_reply);
mstate->reply_list = reply_list;
- mstate->s.env->mesh->stats_dropped++;
+ mstate->s.env->mesh->num_queries_discard_timeout++;
continue;
}
memset(&mesh->ans_rcode[0], 0, sizeof(size_t)*UB_STATS_RCODE_NUM);
memset(&mesh->rpz_action[0], 0, sizeof(size_t)*UB_STATS_RPZ_ACTION_NUM);
mesh->ans_nodata = 0;
+ mesh->num_queries_discard_timeout = 0;
+ mesh->num_queries_wait_limit = 0;
}
size_t
http2_stream_remove_mesh_state(r->h2_stream);
comm_point_drop_reply(&r->query_reply);
mstate->reply_list = reply_list;
- mstate->s.env->mesh->stats_dropped++;
+ mstate->s.env->mesh->num_queries_discard_timeout++;
continue;
}
size_t ans_nodata;
/** (extended stats) type of applied RPZ action */
size_t rpz_action[UB_STATS_RPZ_ACTION_NUM];
+ /** stats, number of queries removed due to discard-timeout */
+ size_t num_queries_discard_timeout;
+ /** stats, number of queries removed due to wait-limit */
+ size_t num_queries_wait_limit;
/** backup of query if other operations recurse and need the
* network buffers */
s->svr.num_queries_cookie_client);
PR_UL_NM("num.queries_cookie_invalid",
s->svr.num_queries_cookie_invalid);
+ PR_UL_NM("num.queries_discard_timeout",
+ s->svr.num_queries_discard_timeout);
+ PR_UL_NM("num.queries_wait_limit", s->svr.num_queries_wait_limit);
PR_UL_NM("num.cachehits",
s->svr.num_queries - s->svr.num_queries_missed_cache);
PR_UL_NM("num.cachemiss", s->svr.num_queries_missed_cache);