summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhangchengwei <[email protected]>2019-01-13 17:26:39 +0800
committerzhangchengwei <[email protected]>2019-01-13 17:26:39 +0800
commit8da65b5d6ff6eaf84b3ef61c98ec828e8dfb8580 (patch)
treefebeb994444fbd4196f8d6af7e3401c6c258a815
parentb50eab6d0053bc0c51559a9a54200e7da602b485 (diff)
更新当前生效规则数统计类型为status;调整主从检测时间,提高从变主时的响应速度。
-rw-r--r--src/pg_valve_main.cpp22
-rw-r--r--src/pg_valve_stat.cpp2
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]);