From cf1062e8fd2eef1a3803a68b05bd8621f673da1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sat, 8 Aug 2015 23:17:27 +0000 Subject: [PATCH] Improvements on handling of idle connections --- include/MySQL_Thread.h | 2 +- lib/MySQL_Thread.cpp | 18 +++++++++--------- src/proxysql.cfg | 7 ++++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/include/MySQL_Thread.h b/include/MySQL_Thread.h index 451c75d1c..356e4f7eb 100644 --- a/include/MySQL_Thread.h +++ b/include/MySQL_Thread.h @@ -139,7 +139,7 @@ class MySQL_Thread private: MySQL_Connection **my_idle_conns; - MySQL_Data_Stream **my_idle_myds; + //MySQL_Data_Stream **my_idle_myds; bool processing_idles; unsigned long long last_processing_idles; PtrArray *mysql_sessions_connections_handler; diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index a61637320..5b362c047 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -187,8 +187,8 @@ MySQL_Threads_Handler::MySQL_Threads_Handler() { variables.max_connections=10*1000; variables.default_query_delay=0; variables.default_query_timeout=24*3600*1000; - variables.ping_interval_server=5000; - variables.ping_timeout_server=100; + variables.ping_interval_server=10000; + variables.ping_timeout_server=200; variables.connect_timeout_server_error=strdup((char *)"#2003:Can't connect to MySQL server"); variables.default_schema=strdup((char *)"information_schema"); variables.default_charset=33; @@ -955,8 +955,8 @@ MySQL_Thread::~MySQL_Thread() { if (my_idle_conns) free(my_idle_conns); - if (my_idle_myds) - free(my_idle_myds); + //if (my_idle_myds) + // free(my_idle_myds); GloQPro->end_thread(); if (mysql_thread___default_schema) { free(mysql_thread___default_schema); mysql_thread___default_schema=NULL; } @@ -1013,8 +1013,8 @@ bool MySQL_Thread::init() { shutdown=0; my_idle_conns=(MySQL_Connection **)malloc(sizeof(MySQL_Connection *)*SESSIONS_FOR_CONNECTIONS_HANDLER); memset(my_idle_conns,0,sizeof(MySQL_Connection *)*SESSIONS_FOR_CONNECTIONS_HANDLER); - my_idle_myds=(MySQL_Data_Stream **)malloc(sizeof(MySQL_Data_Stream *)*SESSIONS_FOR_CONNECTIONS_HANDLER); - memset(my_idle_myds,0,sizeof(MySQL_Data_Stream *)*SESSIONS_FOR_CONNECTIONS_HANDLER); + //my_idle_myds=(MySQL_Data_Stream **)malloc(sizeof(MySQL_Data_Stream *)*SESSIONS_FOR_CONNECTIONS_HANDLER); + //memset(my_idle_myds,0,sizeof(MySQL_Data_Stream *)*SESSIONS_FOR_CONNECTIONS_HANDLER); GloQPro->init_thread(); refresh_variables(); i=pipe(pipefd); @@ -1079,7 +1079,7 @@ void MySQL_Thread::run() { while (shutdown==0) { int num_idles; - if (processing_idles==false && (last_processing_idles < curtime-mysql_thread___ping_interval_server*1000) ) { + if (processing_idles==false && (last_processing_idles < curtime-mysql_thread___ping_interval_server*1000/10) ) { int i; num_idles=MyHGM->get_multiple_idle_connections(-1, curtime-mysql_thread___ping_interval_server*1000, my_idle_conns, SESSIONS_FOR_CONNECTIONS_HANDLER); for (i=0; i