我们的 mysql 进程有时会积压并且进程开始排队。我想通过在缓慢的时间记录进程列表来调试发生这种情况的时间和原因。
我想跑show full processlist;
通过 cron 作业并将输出保存到文本文件(如果有多个)50
返回行。
你能为我指出正确的方向吗?
例如:
echo "show full processlist;" | mysql -uroot > processlist-`date +%F-%H-%M`.log
我想仅当结果包含文本时才运行50 rows in set
(或大于50
rows).
pt-stalk http://www.percona.com/doc/percona-toolkit/2.0/pt-stalk.html正是为此目的而设计的。它每秒(或您指定的任何时间)对进程列表进行采样,然后当达到阈值(Threads_running 是默认值,也是本例中您想要的)时,收集一大堆数据,包括磁盘活动、tcpdump、多个进程列表、服务器状态变量、互斥/innodb 状态等示例。
启动方法如下:
pt-stalk --daemonize --dest /var/lib/pt-stalk --collect-tcpdump --threshold 50 --cycles 1 --disk-pct-free 20 --retention-time 3 -- --defaults-file=/etc/percona-toolkit/pt-stalk_my.cnf
上面的命令将采样 Threads_running (--threshold
;将其设置为您的值n),每秒(默认值--interval
),如果 1 个连续样本的 Threads_running 大于 50,则触发数据收集(--cycles
)。 3天 (--retention-time
)的样本将被保留,如果磁盘可用空间少于 20%(--disk-pct-free
)。每次收集时,都会执行 pcap 格式的 tcpdump(--collect-tcpdump
)可以使用传统的 tcpdump 工具或许多其他 Percona Toolkit 工具进行分析,包括pt查询摘要 http://www.percona.com/doc/percona-toolkit/2.0/pt-query-digest.html and pt-tcp-模型 http://www.percona.com/doc/percona-toolkit/2.0/pt-tcp-model.html。样本之间将有 5 分钟休息时间(默认为--sleep
)以防止 Do youself。该过程将被妖魔化(--daemonize
)。之后的参数--
将被传递给所有 mysql/mysqladmin 命令,因此是设置诸如--defaults-file
您可以在其中存储您的登录凭据,以免被窥探。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)