diff options
| author | zhangchengwei <[email protected]> | 2019-01-13 17:26:39 +0800 |
|---|---|---|
| committer | zhangchengwei <[email protected]> | 2019-01-13 17:26:39 +0800 |
| commit | 8da65b5d6ff6eaf84b3ef61c98ec828e8dfb8580 (patch) | |
| tree | febeb994444fbd4196f8d6af7e3401c6c258a815 | |
| parent | b50eab6d0053bc0c51559a9a54200e7da602b485 (diff) | |
更新当前生效规则数统计类型为status;调整主从检测时间,提高从变主时的响应速度。
| -rw-r--r-- | src/pg_valve_main.cpp | 22 | ||||
| -rw-r--r-- | src/pg_valve_stat.cpp | 2 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/pg_valve_main.cpp b/src/pg_valve_main.cpp index eeb5113..3e75b90 100644 --- a/src/pg_valve_main.cpp +++ b/src/pg_valve_main.cpp @@ -711,14 +711,14 @@ static int register_field_stat(map<string, configure_table_t *> &tables_one, map g_pgvalve_info.statid_exist[i] = FS_register(g_pgvalve_info.fsstat_handle, FS_STYLE_COLUMN, FS_CALC_CURRENT, fs_colom_exist[i]); } - g_pgvalve_info.statid_total_ip = FS_register(g_pgvalve_info.fsstat_handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "TOTAL_IP_RULES"); + g_pgvalve_info.statid_total_ip = FS_register(g_pgvalve_info.fsstat_handle, FS_STYLE_STATUS, FS_CALC_CURRENT, "TOTAL_RULES"); //FS_STAT����ͳ�ƣ�ͳ��ÿ��G�������͵���Ч�� map<int32_t, int32_t>::iterator iter_fs; char item_name[64]; for(iter_fs=g_map_grule_fs2.begin(); iter_fs!=g_map_grule_fs2.end(); iter_fs++) { sprintf(item_name, "SERVICE_%u", iter_fs->first); - iter_fs->second = FS_register(g_pgvalve_info.fsstat_handle, FS_STYLE_FIELD, FS_CALC_CURRENT, item_name); + iter_fs->second = FS_register(g_pgvalve_info.fsstat_handle, FS_STYLE_STATUS, FS_CALC_CURRENT, item_name); } FS_start(g_pgvalve_info.fsstat_handle); @@ -729,7 +729,7 @@ void* thread_consul_status(void *arg) { const char *session_id = (char *)arg; bool retry; - time_t start_time, end_time; + time_t start_time, end_time, sleep_time; while(1) { @@ -773,7 +773,12 @@ retry_session: end_time = time(NULL); if(start_time + g_pgvalve_info.session_ttl >= end_time) { - sleep((g_pgvalve_info.session_ttl - (end_time-start_time))/2); + sleep_time = (g_pgvalve_info.session_ttl - (end_time-start_time))/2; //��TTLʱ����ˢ�²������� + if(!g_valve_master && sleep_time>2) //����ʱ����˯��ʱ�䣬�Ա������Ӧ + { + sleep_time = 2; + } + sleep(sleep_time); } } @@ -813,6 +818,7 @@ int main(int argc, char *argv[]) pthread_create(&thread_desc, &attr, thread_asmis_log, NULL); if(g_pgvalve_info.consul_sw) { + time_t wait_seconds=0; if(!consul_create_session(g_pgvalve_info.lock_delay, g_pgvalve_info.session_ttl, session_id, 128, g_pgvalve_info.log_runtime)) { printf("consul_create_session failed.\n"); @@ -822,8 +828,12 @@ int main(int argc, char *argv[]) pthread_create(&thread_desc, &attr, thread_consul_status, (void *)session_id); while(!g_valve_master) { - MESA_HANDLE_RUNTIME_LOGV2(g_pgvalve_info.log_runtime, RLOG_LV_DEBUG, MODULE_NAME, "pangu_valve waiting to be master."); - sleep(4); + if(wait_seconds%4==0) + { + MESA_HANDLE_RUNTIME_LOGV2(g_pgvalve_info.log_runtime, RLOG_LV_DEBUG, MODULE_NAME, "pangu_valve waiting to be master."); + } + wait_seconds += 1; + sleep(1); } MESA_HANDLE_RUNTIME_LOGV2(g_pgvalve_info.log_runtime, RLOG_LV_FATAL, MODULE_NAME, "pangu_valve elected as master! session_id: %s.", session_id); } diff --git a/src/pg_valve_stat.cpp b/src/pg_valve_stat.cpp index 8a959a7..8313c74 100644 --- a/src/pg_valve_stat.cpp +++ b/src/pg_valve_stat.cpp @@ -454,7 +454,7 @@ void valve_statistic_log_output(map<string, configure_table_t *> &tables_one, ma } } MESA_handle_runtime_log(g_pgvalve_info.log_statistic, RLOG_LV_FATAL, "STAT_INFO_TOTAL_ONE", - "---------------------->RECV: %4llu, ERROR: %4llu, RVALID: %4llu, RINVALID: %4llu, DISP_SUCC: %4llu, DISP_FAIL: %4llu, DISP_LIMIT, REFERENCE: %4llu: %4llu; EXIST: %4llu, EACTIVE: %4llu, EINACTIVE: %4llu, PENDING: %4llu", + "---------------------->RECV: %4llu, ERROR: %4llu, RVALID: %4llu, RINVALID: %4llu, DISP_SUCC: %4llu, DISP_FAIL: %4llu, DISP_LIMIT: %4llu, REFERENCE: %4llu; EXIST: %4llu, EACTIVE: %4llu, EINACTIVE: %4llu, PENDING: %4llu", statistic_incr_tt.num[STAT_FIELD_RECV], statistic_incr_tt.num[STAT_FIELD_RERROR], statistic_incr_tt.num[STAT_FIELD_RVALID], statistic_incr_tt.num[STAT_FIELD_RINVALID], statistic_incr_tt.num[STAT_FIELD_DISP_SUCC], statistic_incr_tt.num[STAT_FIELD_DISP_FAIL], statistic_incr_tt.num[STAT_FIELD_DISP_LIMIT], statistic_incr_tt.num[STAT_FIELD_DISP_REFER], statistic_exist_tt.num[STAT_FIELD_EXITS], statistic_exist_tt.num[STAT_FIELD_EACTIVE], statistic_exist_tt.num[STAT_FIELD_EINACTIVE], statistic_exist_tt.num[STAT_FIELD_PENDING]); |
