From 1ea33dd844bfa0fa0753eabbe8303c95418514c8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 12 Jun 2020 15:06:14 +0800 Subject: [PATCH] add perfmonitor --- server/imserver/IMConn.cc | 2 +- server/imserver/MSConn.cc | 2 +- server/imserver/app.cc | 35 ++++++++++++++++------------------ server/imserver/app.h | 1 - server/imserver/perfmonitor.cc | 13 +++++++++++++ server/imserver/perfmonitor.h | 21 ++++++++++++++++++++ server/imserver/types.h | 12 ------------ third_party/a8engine | 2 +- third_party/framework | 2 +- 9 files changed, 54 insertions(+), 36 deletions(-) create mode 100644 server/imserver/perfmonitor.cc create mode 100644 server/imserver/perfmonitor.h diff --git a/server/imserver/IMConn.cc b/server/imserver/IMConn.cc index 391c526..51c62ae 100644 --- a/server/imserver/IMConn.cc +++ b/server/imserver/IMConn.cc @@ -112,7 +112,7 @@ void IMConn::on_disconnect(a8::AsyncTcpClient* sender) void IMConn::on_socketread(a8::AsyncTcpClient* sender, char* buf, unsigned int len) { #if 0 - ++App::Instance()->perf.read_count; + ++PerfMonitor::Instance()->read_count; #endif if (recv_bufflen_ + len > 2 * PACK_MAX) { recv_bufflen_ = 0; diff --git a/server/imserver/MSConn.cc b/server/imserver/MSConn.cc index cd324c0..383f71e 100644 --- a/server/imserver/MSConn.cc +++ b/server/imserver/MSConn.cc @@ -112,7 +112,7 @@ void MSConn::on_disconnect(a8::AsyncTcpClient* sender) void MSConn::on_socketread(a8::AsyncTcpClient* sender, char* buf, unsigned int len) { #if 0 - ++App::Instance()->perf.read_count; + ++PerfMonitor::Instance()->read_count; #endif if (recv_bufflen_ + len > 2 * PACK_MAX) { recv_bufflen_ = 0; diff --git a/server/imserver/app.cc b/server/imserver/app.cc index f3bc75b..738fe2f 100644 --- a/server/imserver/app.cc +++ b/server/imserver/app.cc @@ -23,6 +23,7 @@ #include "playermgr.h" #include "groupmgr.h" #include "dbengine.h" +#include "perfmonitor.h" #include "MSConnMgr.h" #include "IMConnMgr.h" @@ -56,14 +57,14 @@ static void SavePerfLog() "in_data_size:%d out_data_size:%d msgnode_size:%d read_count:%d max_login_time:%d " "max_join_time:%d", { - App::Instance()->perf.max_run_delay_time, - App::Instance()->perf.max_timer_idle, - App::Instance()->perf.in_data_size, - App::Instance()->perf.out_data_size, + PerfMonitor::Instance()->max_run_delay_time, + PerfMonitor::Instance()->max_timer_idle, + PerfMonitor::Instance()->in_data_size, + PerfMonitor::Instance()->out_data_size, App::Instance()->msgnode_size_, - App::Instance()->perf.read_count, - App::Instance()->perf.max_login_time, - App::Instance()->perf.max_join_time, + PerfMonitor::Instance()->read_count, + PerfMonitor::Instance()->max_login_time, + PerfMonitor::Instance()->max_join_time, }); a8::UdpLog::Instance()->Info(" run_times:%d timer_times:%d event_times:%d free_times:%d " " shutdown_times:%d connect_times:%d close_times:%d " @@ -81,14 +82,10 @@ static void SavePerfLog() (long long)a8::IoLoop::Instance()->error_times, (long long)a8::IoLoop::Instance()->immsg_times }); - #if 1 - App::Instance()->perf.max_run_delay_time = 0; - App::Instance()->perf.max_timer_idle = 0; - App::Instance()->perf.max_login_time = 0; - App::Instance()->perf.max_join_time = 0; - #else - App::Instance()->perf = PerfMonitor(); - #endif + PerfMonitor::Instance()->max_run_delay_time = 0; + PerfMonitor::Instance()->max_timer_idle = 0; + PerfMonitor::Instance()->max_login_time = 0; + PerfMonitor::Instance()->max_join_time = 0; } bool App::Init(int argc, char* argv[]) @@ -213,8 +210,8 @@ int App::Run() QuickExecute(); SlowerExecute(); a8::tick_t end_tick = a8::XGetTickCount(); - if (end_tick - begin_tick > perf.max_run_delay_time) { - perf.max_run_delay_time = end_tick - begin_tick; + if (end_tick - begin_tick > PerfMonitor::Instance()->max_run_delay_time) { + PerfMonitor::Instance()->max_run_delay_time = end_tick - begin_tick; } Schedule(); } @@ -296,8 +293,8 @@ void App::Schedule() if (!HasTask()) { int sleep_time = a8::Timer::Instance()->GetIdleableMillSeconds(); loop_cond_->wait_for(lk, std::chrono::milliseconds(sleep_time)); - if (sleep_time > perf.max_timer_idle) { - perf.max_timer_idle = sleep_time; + if (sleep_time > PerfMonitor::Instance()->max_timer_idle) { + PerfMonitor::Instance()->max_timer_idle = sleep_time; } } } diff --git a/server/imserver/app.h b/server/imserver/app.h index 6e77e23..5f84162 100644 --- a/server/imserver/app.h +++ b/server/imserver/app.h @@ -61,7 +61,6 @@ private: volatile bool terminated = false; volatile bool shutdowned = false; std::set flags; - PerfMonitor perf; a8::uuid::SnowFlake uuid; public: diff --git a/server/imserver/perfmonitor.cc b/server/imserver/perfmonitor.cc new file mode 100644 index 0000000..3f77e1a --- /dev/null +++ b/server/imserver/perfmonitor.cc @@ -0,0 +1,13 @@ +#include "precompile.h" + +#include "perfmonitor.h" + +void PerfMonitor::Init() +{ + +} + +void PerfMonitor::UnInit() +{ + +} diff --git a/server/imserver/perfmonitor.h b/server/imserver/perfmonitor.h new file mode 100644 index 0000000..48584b8 --- /dev/null +++ b/server/imserver/perfmonitor.h @@ -0,0 +1,21 @@ +#pragma once + +class PerfMonitor : public a8::Singleton +{ + private: + PerfMonitor() {}; + friend class a8::Singleton; + + public: + int max_run_delay_time = 0; + int max_dispatchmsg_time = 0; + int max_timer_idle = 0; + long long max_login_time = 0; + long long max_join_time = 0; + long long out_data_size = 0; + long long in_data_size = 0; + long long read_count = 0; + + void Init(); + void UnInit(); +}; diff --git a/server/imserver/types.h b/server/imserver/types.h index a4ca997..223fdf4 100644 --- a/server/imserver/types.h +++ b/server/imserver/types.h @@ -1,17 +1,5 @@ #pragma once -struct PerfMonitor -{ - int max_run_delay_time = 0; - int max_dispatchmsg_time = 0; - int max_timer_idle = 0; - long long max_login_time = 0; - long long max_join_time = 0; - long long out_data_size = 0; - long long in_data_size = 0; - long long read_count = 0; -}; - struct Friend { std::string account_id; diff --git a/third_party/a8engine b/third_party/a8engine index c6c7cb3..d73ff7e 160000 --- a/third_party/a8engine +++ b/third_party/a8engine @@ -1 +1 @@ -Subproject commit c6c7cb379e997ce3808edff38e822eda3da19915 +Subproject commit d73ff7eb0c53e6d93db95b14d0fb5945fae24649 diff --git a/third_party/framework b/third_party/framework index 4e1a347..6a53924 160000 --- a/third_party/framework +++ b/third_party/framework @@ -1 +1 @@ -Subproject commit 4e1a34704dc08d0279e78c275989f10f85fd6cc2 +Subproject commit 6a5392433ccd85ffbfea9a904fde0f5bae22c155