У меня для таких целей был скриптик, работающий в фоне: раз в 5 секунд считает количество активных тредов MySQL, и если кол-во запросов больше N, то он дампит исполняющиеся запросы в лог-файл.
Именно таким способом были выявлены основные блокирующие запросы.
Для FreeBSD, запускался через screen:
#!/bin/sh
HOSTNAME=`hostname -s`
DIR="/var/log/mlog.$HOSTNAME"
pass='testpass'
while :
do
threads=`mysql -uroot -p$pass -B -e "show status"|grep ^Threads_running|cut -f 2`
# если тредов больше 60, пишем в лог:
if [ "$threads" -gt 60 ] ; then
{
mysqladmin -uroot -p$pass processlist --verbose |grep -v Sleep|sed 's| ||g'
iostat -dNx 2 2
} |gzip > "$DIR/`date "+%Y-%m-%d_%H:%M:%S"`.list.gz"
fi
sleep 5
done