connection-start
および connection-done
プローブは、接続がソケット経由かネットワーク接続経由かに関係なく、クライアントからの接続を囲みます。
connection-start(connectionid, user, host)
connection-done(status, connectionid)
-
connection-start
: 接続および正常なログインおよび認証がクライアントによって実行されたあとでトリガーされます。引数には次の接続情報が含まれます。connectionid
: 接続 ID を格納するunsigned long
。これはSHOW PROCESSLIST
からの出力のId
値に表示されるプロセス ID と同じです。user
: 認証に使用されるユーザー名。匿名ユーザーの場合、値はブランクです。host
: クライアント接続のホスト。UNIX ソケットを使用して実行される接続の場合、値はブランクです。
-
connection-done
: クライアントへの接続がクローズしたときにトリガーされます。引数は次のとおりです。status
: 接続がクローズされたときのそのステータス。ログアウト操作は値 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(@);
}
多数のクライアントを持つサーバー上で実行すると、次のような出力が表示されることがあります。
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