5.8.1.1 连接探针
connection-start
和connection-done
探针将封闭来自 Client 端的连接,而不管该连接是通过套接字还是网络连接。
connection-start(connectionid, user, host)
connection-done(status, connectionid)
-
connection-start
:Client 端完成连接并成功登录/认证后触发。参数包含连接信息: -
connectionid
:包含连接 ID 的unsigned long
。这与SHOW PROCESSLIST的输出中显示为Id
值的进程 ID 相同。-
user
:认证时使用的用户名。对于匿名用户,该值将为空白。 -
host
:Client 端连接的主机。对于使用 Unix 套接字构建的连接,该值为空白。
-
-
connection-done
:与 Client 端的连接已关闭时触发。参数为: -
status
:连接关闭时的状态。注销操作的值为 0;否则为 0.连接的任何其他终止都具有非零值。connectionid
:已关闭的连接的连接 ID。
以下 D 脚本将量化并总结单个连接的平均持续时间,并提供计数,每 60 秒转储一次信息:
#!/usr/sbin/dtrace -s
mysql*:::connection-start
{
self->start = timestamp;
}
mysql*:::connection-done
/self->start/
{
@ = quantize(((timestamp - self->start)/1000000));
self->start = 0;
}
tick-60s
{
printa(@);
}
在具有大量 Client 端的服务器上执行时,您可能会看到类似以下的输出:
1 57413 :tick-60s
value ------------- Distribution ------------- count
-1 | 0
0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 30011
1 | 59
2 | 5
4 | 20
8 | 29
16 | 18
32 | 27
64 | 30
128 | 11
256 | 10
512 | 1
1024 | 6
2048 | 8
4096 | 9
8192 | 8
16384 | 2
32768 | 1
65536 | 1
131072 | 0
262144 | 1
524288 | 0