一,工具简介
mysqld_qslower工具用于追踪 MySQL 服务器提供的查询,并打印出那些超过延迟(查询时间)阈值的查询。默认情况下,使用的阈值为 1 毫秒。
二,代码示例
#!/usr/bin/env pythonfrom __future__ import print_function
from bcc import BPF, USDT
import sys# arguments
def usage():print("USAGE: mysqld_qslower PID [min_ms]")exit()
if len(sys.argv) < 2:usage()
if sys.argv[1][0:1] == "-":usage()
pid = int(sys.argv[1])
min_ns = 1 * 1000000
min_ms_text = 1
if len(sys.argv) == 3:min_ns = float(sys.argv[2]) * 1000000min_ms_text = sys.argv[2]
debug = 0
QUERY_MAX = 128# 载入 BPF程序
bpf_text = """
#include <uapi/linux/ptrace.h>#define QUERY_MAX """ + str(QUERY_MAX) + """struct start_t {u64 ts;char *query;
};struct data_t {u32 pid;u64 ts;u64 delta;char query[QUERY_MAX];
};BPF_HASH(start_tmp, u32, struct