dbslower - Trace MySQL/PostgreSQL server queries slower than a threshold.
Contents
Description
This traces queries served by a MySQL or PostgreSQL server, and prints those that exceed a latency (query
time) threshold. By default a threshold of 1 ms is used.
This uses User Statically-Defined Tracing (USDT) probes, a feature added to MySQL and PostgreSQL for
DTrace support, but which may not be enabled on a given installation. See requirements. Alternatively,
MySQL queries can be traced without the USDT support using the -x option.
Since this uses BPF, only the root user can use this tool.
Examples
Trace MySQL server queries slower than 1 ms:
# dbslowermysql
Trace slower than 10 ms for PostgreSQL in process 408:
# dbslowerpostgres-p408-m10Fields
TIME(s)
Time of query start, in seconds.
PID Process ID of the traced server.
MS Milliseconds for the query, from start to end.
QUERY Query string, truncated to 256 characters.
Name
dbslower - Trace MySQL/PostgreSQL server queries slower than a threshold.
Options
-h Print usage message.
-p PID Trace this PID. If no PID is specified, the tool will attempt to automatically detect the MySQL or
PostgreSQL processes running on the system.
-x PATH
Path to MySQL binary. This option allow to MySQL queries even when USDT probes aren't enabled on
the MySQL server.
-m THRESHOLD
Minimum query latency (duration) to trace, in milliseconds. Default is 1 ms.
{mysql,postgres}
The database engine to trace.
Os
Linux
Overhead
This adds low-overhead instrumentation to queries, and only emits output data from kernel to user-level
if they query exceeds the threshold. If the server query rate is less than 1,000/sec, the overhead is
expected to be negligible. If the query rate is higher, test to gauge overhead.
Requirements
CONFIG_BPF, bcc, and MySQL server with USDT probe support (when configuring the build: -DENABLE_DTRACE=1)
or PostgreSQL server with USDT probe support (when configuring the build: --enable-dtrace).
See Also
biosnoop(8), mysqld_qslower(8), dbstat(8) USER COMMANDS 2017-02-15 dbslower(8)
Source
This is from bcc.
https://github.com/iovisor/bcc
Also look in the bcc distribution for a companion _examples.txt file containing example usage, output,
and commentary for this tool.
Stability
Unstable - in development.
Synopsis
dbslower[-v][-pPID[PID...]][-xPATH][-mTHRESHOLD]{mysql,postgres}