增加缓存策略的统计日志。
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user