完善性能监控

This commit is contained in:
aozhiwei 2020-07-04 18:36:52 +08:00
parent 38ba6b5876
commit 154536a37d
5 changed files with 9 additions and 28 deletions

View File

@ -20,6 +20,7 @@
#include "GGListener.h" #include "GGListener.h"
#include "IMListener.h" #include "IMListener.h"
#include "cachemgr.h" #include "cachemgr.h"
#include "perfmonitor.h"
#include "ss_msgid.pb.h" #include "ss_msgid.pb.h"
#include "ss_proto.pb.h" #include "ss_proto.pb.h"
@ -50,16 +51,6 @@ struct IMMsgNode
const char* const PROJ_LOG_ROOT_FMT = "/data/logs/%s/logs"; const char* const PROJ_LOG_ROOT_FMT = "/data/logs/%s/logs";
const char* const PROJ_LOG_FILENAME_FMT = "log_$pid_%Y%m%d.log"; const char* const PROJ_LOG_FILENAME_FMT = "log_$pid_%Y%m%d.log";
static void SavePerfLog()
{
a8::UdpLog::Instance()->Info("max_mainloop_rundelay:%d",
{
App::Instance()->perf.max_run_delay_time,
});
App::Instance()->perf.max_run_delay_time = 0;
App::Instance()->perf.max_timer_idle = 0;
}
void App::Init(int argc, char* argv[]) void App::Init(int argc, char* argv[])
{ {
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
@ -86,6 +77,7 @@ void App::Init(int argc, char* argv[])
InitLog(); InitLog();
HandlerMgr::Instance()->Init(); HandlerMgr::Instance()->Init();
a8::Timer::Instance()->Init(); a8::Timer::Instance()->Init();
PerfMonitor::Instance()->Init();
f8::MsgQueue::Instance()->Init(); f8::MsgQueue::Instance()->Init();
f8::TGLog::Instance()->Init(a8::Format(PROJ_NAME_FMT, {}), false); f8::TGLog::Instance()->Init(a8::Format(PROJ_NAME_FMT, {}), false);
JsonDataMgr::Instance()->Init(); JsonDataMgr::Instance()->Init();
@ -97,18 +89,6 @@ void App::Init(int argc, char* argv[])
CacheMgr::Instance()->Init(); CacheMgr::Instance()->Init();
a8::UdpLog::Instance()->Info("masterserver starting instance_id:%d pid:%d", {instance_id, getpid()}); a8::UdpLog::Instance()->Info("masterserver starting instance_id:%d pid:%d", {instance_id, getpid()});
{
int perf_log_time = 1000 * 60 * 5;
if (getenv("is_dev_env")) {
perf_log_time = 1000 * 10;
}
a8::Timer::Instance()->AddRepeatTimer(perf_log_time,
a8::XParams(),
[] (const a8::XParams& param)
{
SavePerfLog();
});
}
} }
void App::UnInit() void App::UnInit()
@ -123,6 +103,7 @@ void App::UnInit()
GGListener::Instance()->UnInit(); GGListener::Instance()->UnInit();
JsonDataMgr::Instance()->UnInit(); JsonDataMgr::Instance()->UnInit();
f8::MsgQueue::Instance()->UnInit(); f8::MsgQueue::Instance()->UnInit();
PerfMonitor::Instance()->UnInit();
a8::Timer::Instance()->UnInit(); a8::Timer::Instance()->UnInit();
HandlerMgr::Instance()->UnInit(); HandlerMgr::Instance()->UnInit();
f8::TGLog::Instance()->UnInit(); f8::TGLog::Instance()->UnInit();
@ -150,8 +131,8 @@ int App::Run()
SlowerExecute(delta_time); SlowerExecute(delta_time);
Schedule(); Schedule();
a8::tick_t end_tick = a8::XGetTickCount(); a8::tick_t end_tick = a8::XGetTickCount();
if (end_tick - begin_tick > perf.max_run_delay_time) { if (end_tick - begin_tick > PerfMonitor::Instance()->max_run_delay_time) {
perf.max_run_delay_time = end_tick - begin_tick; PerfMonitor::Instance()->max_run_delay_time = end_tick - begin_tick;
} }
delta_time = end_tick - begin_tick; delta_time = end_tick - begin_tick;
} }

View File

@ -54,7 +54,6 @@ public:
int argc = 0; int argc = 0;
char** argv = nullptr; char** argv = nullptr;
volatile bool terminated = false; volatile bool terminated = false;
PerfMonitor perf;
a8::uuid::SnowFlake uuid; a8::uuid::SnowFlake uuid;
public: public:

View File

@ -9,14 +9,15 @@
#include "svrmgr.h" #include "svrmgr.h"
#include "imsmgr.h" #include "imsmgr.h"
#include "cachemgr.h" #include "cachemgr.h"
#include "perfmonitor.h"
static void _GMOpsSelfChecking(f8::JsonHttpRequest* request) static void _GMOpsSelfChecking(f8::JsonHttpRequest* request)
{ {
request->resp_xobj->SetVal("errcode", 0); request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", ""); request->resp_xobj->SetVal("errmsg", "");
request->resp_xobj->SetVal("healthy", 1); request->resp_xobj->SetVal("healthy", 1);
request->resp_xobj->SetVal("max_rundelay", App::Instance()->perf.max_run_delay_time); request->resp_xobj->SetVal("max_rundelay", PerfMonitor::Instance()->max_run_delay_time);
request->resp_xobj->SetVal("max_timer_idle", App::Instance()->perf.max_timer_idle); request->resp_xobj->SetVal("max_timer_idle", PerfMonitor::Instance()->max_timer_idle);
} }
static void _GMOpsReload(f8::JsonHttpRequest* request) static void _GMOpsReload(f8::JsonHttpRequest* request)

View File

@ -38,7 +38,6 @@ static void SavePerfLog()
}); });
PerfMonitor::Instance()->max_run_delay_time = 0; PerfMonitor::Instance()->max_run_delay_time = 0;
PerfMonitor::Instance()->max_timer_idle = 0; PerfMonitor::Instance()->max_timer_idle = 0;
PerfMonitor::Instance()->max_login_time = 0;
} }
void PerfMonitor::Init() void PerfMonitor::Init()

View File

@ -8,6 +8,7 @@ class PerfMonitor : public a8::Singleton<PerfMonitor>
public: public:
int max_run_delay_time = 0; int max_run_delay_time = 0;
int max_timer_idle = 0;
int max_dispatchmsg_time = 0; int max_dispatchmsg_time = 0;
long long out_data_size = 0; long long out_data_size = 0;
long long in_data_size = 0; long long in_data_size = 0;