From 5f99c65fa6d6c4848f0f956ec70ac31cb8d73146 Mon Sep 17 00:00:00 2001 From: wuxianrong Date: Wed, 19 Mar 2025 15:28:20 +0800 Subject: [PATCH 1/2] fix exit core --- include/pika_cmd_table_manager.h | 1 - include/pika_server.h | 1 + src/pika_cmd_table_manager.cc | 1 - src/pika_server.cc | 12 ++++++++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/pika_cmd_table_manager.h b/include/pika_cmd_table_manager.h index 6e3fd7a720..85c827a662 100644 --- a/include/pika_cmd_table_manager.h +++ b/include/pika_cmd_table_manager.h @@ -73,7 +73,6 @@ class PikaCmdTableManager { */ std::unordered_map cmdstat_map_; std::unordered_map slow_command_count_; - std::thread reset_thread_; std::mutex command_mutex_; std::shared_mutex histograms_mutex_; std::shared_mutex slow_command_mutex_; diff --git a/include/pika_server.h b/include/pika_server.h index 81cda87b04..16f75e8ccf 100644 --- a/include/pika_server.h +++ b/include/pika_server.h @@ -259,6 +259,7 @@ class PikaServer : public pstd::noncopyable { void ResetStat(); void incr_accumulative_connections(); void ResetLastSecQuerynum(); + void ResetCommandCount(); void UpdateQueryNumAndExecCountDB(const std::string& db_name, const std::string& command, bool is_write); std::unordered_map ServerExecCountDB(); std::unordered_map ServerAllDBStat(); diff --git a/src/pika_cmd_table_manager.cc b/src/pika_cmd_table_manager.cc index 2ca8b62d72..18a42d9373 100644 --- a/src/pika_cmd_table_manager.cc +++ b/src/pika_cmd_table_manager.cc @@ -38,7 +38,6 @@ PikaCmdTableManager::PikaCmdTableManager() { cmds_ = std::make_unique(); cmds_->reserve(300); InitHistograms(); - reset_thread_ = std::thread(&PikaCmdTableManager::ResetCommandCount, this); } void PikaCmdTableManager::InitCmdTable(void) { diff --git a/src/pika_server.cc b/src/pika_server.cc index bbf444191d..f4d1a47158 100644 --- a/src/pika_server.cc +++ b/src/pika_server.cc @@ -1033,6 +1033,16 @@ void PikaServer::ResetLastSecQuerynum() { statistic_.ResetDBLastSecQuerynum(); } +void PikaServer::ResetCommandCount() { + thread_local uint64_t last_reset_time = 0; + auto current_time = pstd::NowMicros(); + if (current_time - last_reset_time < 60 * 1000 * 1000) { + return; + } + last_reset_time = current_time; + g_pika_cmd_table_manager->ResetCommandCount(); +} + void PikaServer::UpdateQueryNumAndExecCountDB(const std::string& db_name, const std::string& command, bool is_write) { std::string cmd(command); statistic_.server_stat.qps.querynum++; @@ -1139,6 +1149,8 @@ void PikaServer::DoTimingTask() { ResetLastSecQuerynum(); // Auto update network instantaneous metric AutoUpdateNetworkMetric(); + // Reset command statistics + ResetCommandCount(); ProcessCronTask(); UpdateCacheInfo(); // Print the queue status periodically From 05a77d750a1541092726636f8a53d5f3730ef528 Mon Sep 17 00:00:00 2001 From: wuxianrong Date: Wed, 19 Mar 2025 15:35:27 +0800 Subject: [PATCH 2/2] add conf --- conf/pika.conf | 4 ++-- src/pika_cmd_table_manager.cc | 11 +++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/conf/pika.conf b/conf/pika.conf index 5129919c42..b50452bbcd 100644 --- a/conf/pika.conf +++ b/conf/pika.conf @@ -45,9 +45,9 @@ admin-thread-pool-size : 2 slow-cmd-list : # List of commands considered as administrative. These commands will be handled by the admin thread pool. Modify this list as needed. -# Default commands: info, ping, monitor +# Default commands: info, ping, monitor, auth # This parameter is only supported by the CONFIG GET command and not by CONFIG SET. -admin-cmd-list : info, ping, monitor +admin-cmd-list : info, ping, monitor, auth # The number of threads to write DB in slaveNode when replicating. # It's preferable to set slave's sync-thread-num value close to master's thread-pool-size. diff --git a/src/pika_cmd_table_manager.cc b/src/pika_cmd_table_manager.cc index 18a42d9373..7559bc7c6d 100644 --- a/src/pika_cmd_table_manager.cc +++ b/src/pika_cmd_table_manager.cc @@ -15,14 +15,9 @@ extern std::unique_ptr g_pika_conf; void PikaCmdTableManager::ResetCommandCount() { - while (true) { - std::this_thread::sleep_for(std::chrono::minutes(1)); - { - std::lock_guard lock(command_mutex_); - slow_command_count_.clear(); - InitHistograms(); - } - } + std::lock_guard lock(command_mutex_); + slow_command_count_.clear(); + InitHistograms(); } void PikaCmdTableManager::InitHistograms() {