增加缓存策略的统计日志。

This commit is contained in:
zhengchao
2018-11-24 16:41:10 +08:00
parent cb3737d02a
commit b53107e298

View File

@@ -36,6 +36,8 @@ enum cache_stat_field
STAT_CACHE_QUERY_ABANDON,
STAT_CACHE_QUERYING,
STAT_CACHE_PENDING,
STAT_CACHE_POLICY_MATCH,
STAT_CACHE_POLICY_EFFECT,
STAT_CACHE_UPLOAD_CNT,
STAT_CACHE_UPLOAD_BYPASS,
STAT_CACHE_UPLOAD_OVERRIDE,
@@ -224,6 +226,8 @@ const char* statsd_server_ip, int statsd_server_port, const char*histogram_bins)
set_stat_spec(&spec[STAT_CACHE_QUERY_ABANDON], "get_abandon",FS_STYLE_STATUS, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_QUERYING], "getting",FS_STYLE_STATUS, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_PENDING], "pending",FS_STYLE_STATUS, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_POLICY_MATCH], "policy_match",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_POLICY_EFFECT], "policy_effect",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOAD_CNT], "cache_put",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOAD_BYPASS], "cache_bypass",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOAD_OVERRIDE], "or_put",FS_STYLE_FIELD, FS_CALC_CURRENT);
@@ -604,6 +608,34 @@ void cache_param_dup(int idx, MAAT_RULE_EX_DATA *to, MAAT_RULE_EX_DATA *from, lo
*((struct cache_param**)to)=from_param;
return;
}
struct cache_mid
{
enum cache_pending_result result;
struct request_freshness req_fresshness;
char shall_bypass;
char is_using_exception_param;
char is_dyn_url;
char is_html;
char has_cookie;
char use_cnt;
int cfg_id;
char* cache_key;
struct cache_param* param;
};
void cache_mid_clear(struct cache_mid **mid)
{
if(*mid==NULL)
{
return;
}
if((*mid)->is_using_exception_param)
{
cache_param_free(0, NULL, NULL, (void**)&((*mid)->param), 0, NULL);
}
FREE(&((*mid)->cache_key));
FREE(mid);
return;
}
static void cache_key_bloom_gc_cb(evutil_socket_t fd, short what, void * arg)
{
@@ -743,8 +775,8 @@ static char* read_http1_hdr(const char* hdr, const char* field_name)
struct cache_query_context
{
struct cache_handle* ref_handle;
const struct cache_mid* ref_mid;
char* url;
struct cached_meta meta;
struct tango_cache_result* ref_tango_cache_result;
@@ -821,6 +853,10 @@ static void cache_query_obj_on_succ(future_result_t * result, void * user)
{
case RESULT_TYPE_HEADER:
ATOMIC_INC(&(ctx->ref_handle->stat_val[STAT_CACHE_QUERY_HIT]));
if(ctx->ref_mid->is_using_exception_param==1)
{
ATOMIC_INC(&(ctx->ref_handle->stat_val[STAT_CACHE_POLICY_EFFECT]));
}
FS_operate(ctx->ref_handle->fs_handle, ctx->ref_handle->fs_id[STAT_CACHE_QUERY_HIT_OJB_SIZE], 0, FS_OP_SET, ctx->ref_tango_cache_result->tlength/1024);
cached_meta_set(&ctx->meta, RESULT_TYPE_HEADER, ctx->ref_tango_cache_result->data_frag, ctx->ref_tango_cache_result->size);
ctx->meta.content_length=ctx->ref_tango_cache_result->tlength;
@@ -950,34 +986,7 @@ static void cache_query_meta_on_fail(enum e_future_error err, const char * what,
cache_pending_ctx_free_cb(ctx);
return;
}
struct cache_mid
{
enum cache_pending_result result;
struct request_freshness req_fresshness;
char shall_bypass;
char is_using_exception_param;
char is_dyn_url;
char is_html;
char has_cookie;
char use_cnt;
int cfg_id;
char* cache_key;
struct cache_param* param;
};
void cache_mid_clear(struct cache_mid **mid)
{
if(*mid==NULL)
{
return;
}
if((*mid)->is_using_exception_param)
{
cache_param_free(0, NULL, NULL, (void**)&((*mid)->param), 0, NULL);
}
FREE(&((*mid)->cache_key));
FREE(mid);
return;
}
#define CACHE_ACTION_BYPASS 0x80
enum cache_pending_result web_cache_async_pending(struct cache_handle* handle, unsigned int thread_id,
@@ -1036,6 +1045,7 @@ enum cache_pending_result web_cache_async_pending(struct cache_handle* handle, u
cache_policy.config_id,
request->req_spec.url,
_mid->cache_key!=NULL?_mid->cache_key:"null");
ATOMIC_INC(&(handle->stat_val[STAT_CACHE_POLICY_MATCH]));
}
if(_mid->shall_bypass ||
@@ -1141,6 +1151,7 @@ int web_cache_async_query(struct cache_handle* handle, unsigned int thread_id,
meta.get=_mid->req_fresshness;
query_ctx=ALLOC(struct cache_query_context, 1);
query_ctx->ref_handle=handle;
query_ctx->ref_mid=_mid;
query_ctx->url=tfe_strdup(request->req_spec.url);
p=future_to_promise(f);