mirror of
https://github.com/OpenNebula/one.git
synced 2025-01-11 05:17:41 +03:00
Log slow MySQL queries, threshold set to 0.5s
This commit is contained in:
parent
d40cd199b9
commit
43aeed9dbb
@ -58,6 +58,28 @@ public:
|
||||
zone_id = zid;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Profiler Interface
|
||||
// -------------------------------------------------------------------------
|
||||
static void start_timer(struct timespec * estart)
|
||||
{
|
||||
clock_gettime(CLOCK_MONOTONIC, estart);
|
||||
}
|
||||
|
||||
static double stop_timer(struct timespec * estart)
|
||||
{
|
||||
double sec;
|
||||
|
||||
struct timespec eend;
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC, &eend);
|
||||
|
||||
sec = (eend.tv_sec + (eend.tv_nsec * 1e-9)) - (estart->tv_sec +
|
||||
(estart->tv_nsec * 1e-9));
|
||||
|
||||
return sec;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Logger interface
|
||||
// -------------------------------------------------------------------------
|
||||
|
@ -169,6 +169,10 @@ int MySqlDB::exec(ostringstream& cmd, Callbackable* obj, bool quiet)
|
||||
|
||||
Log::MessageType error_level = quiet ? Log::DDEBUG : Log::ERROR;
|
||||
|
||||
struct timespec timer;
|
||||
|
||||
Log::start_timer(&timer);
|
||||
|
||||
MYSQL * db = get_db_connection();
|
||||
|
||||
int rc = mysql_query(db, c_str);
|
||||
@ -272,6 +276,18 @@ int MySqlDB::exec(ostringstream& cmd, Callbackable* obj, bool quiet)
|
||||
|
||||
free_db_connection(db);
|
||||
|
||||
double sec = Log::stop_timer(&timer);
|
||||
|
||||
if ( sec > 0.5 )
|
||||
{
|
||||
std::ostringstream oss;
|
||||
|
||||
oss << "Slow query (" << one_util::float_to_str(sec) << "s) detected: "
|
||||
<< str;
|
||||
|
||||
NebulaLog::log("SQL", Log::WARNING, oss);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user