千家信息网

linux中如何使用strace追踪mysql执行语句

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关linux中如何使用strace追踪mysql执行语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。strace是Linux环境下的一款
千家信息网最后更新 2026年11月01日linux中如何使用strace追踪mysql执行语句

这篇文章将为大家详细讲解有关linux中如何使用strace追踪mysql执行语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。



strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息。追踪程序运行时的整个生命周期,输出每一个系统调用的名字,参数,返回值和执行消耗的时间等。
strace常用参数:
-p 跟踪指定的进程
-f 跟踪由fork子进程系统调用
-F 尝试跟踪vfork子进程系统调吸入,与-f同时出现时, vfork不被跟踪
-o filename 默认strace将结果输出到stdout。通过-o可以将输出写入到filename文件中
-ff 常与-o选项一起使用,不同进程(子进程)产生的系统调用输出到filename.PID文件
-r 打印每一个系统调用的相对时间
-t 在输出中的每一行前加上时间信息。 -tt 时间确定到微秒级。还可以使用-ttt打印相对时间
-v 输出所有系统调用。默认情况下,一些频繁调用的系统调用不会输出
-s 指定每一行输出字符串的长度,默认是32。文件名一直全部输出
-c 统计每种系统调用所执行的时间,调用次数,出错次数。
-e expr 输出过滤器,通过表达式,可以过滤出掉你不想要输出

1. strace追踪多个进程方法:
当有多个子进程的情况下,比如php-fpm、nginx等,用strace追踪显得很不方便。可以使用下面的方法来追踪所有的子进程。

# vim /root/.bashrc //添加以下内容function straceall {strace $(pidof "${1}" | sed 's/\([0-9]*\)/-p \1/g')}# source /root/.bashrc

执行:

# traceall php-fpm

2. 追踪web服务器系统调用情况

# strace -f -F -s 1024 -o nginx-strace /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf# strace -f -F -o php-fpm-strace /usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm.conf

3. 追踪mysql执行语句

# strace -f -F -ff -o mysqld-strace -s 1024 -p mysql_pid# find ./ -name "mysqld-strace*" -type f -print |xargs grep -n "SELECT.*FROM"

4. whatisdong-查看程序在干啥

#!/bin/bash# This script is from http://poormansprofiler.org/nsamples=1sleeptime=0pid=$(pidof $1)for x in $(seq 1 $nsamples)  do    gdb -ex "set pagination 0" -ex "thread apply all bt" -batch -p $pid    sleep $sleeptime  done | \awk '  BEGIN { s = ""; }   /^Thread/ { print s; s = ""; }   /^\#/ { if (s != "" ) { s = s "," $4} else { s = $4 } }   END { print s }' | \sort | uniq -c | sort -r -n -k 1,1

输出:

# profiler.sh mysqld727 pthread_cond_wait@@GLIBC_2.3.2,cache_thread,put_in_cache=true),handle_one_connection,start_thread,??  4 pthread_cond_wait@@GLIBC_2.3.2,os_event_wait_low,os_aio_simulated_handle,fil_aio_wait,io_handler_thread,start_thread,??  4 ??,??  2 read,my_real_read,my_net_read,do_command,handle_one_connection,start_thread,??  1 pthread_cond_wait@@GLIBC_2.3.2,os_event_wait_low,srv_master_thread,start_thread,??  1 pthread_cond_wait@@GLIBC_2.3.2,MYSQL_BIN_LOG::wait_for_update,mysql_binlog_send,dispatch_command,do_command,handle_one_connection,start_thread,??  1 do_sigwait,sigwait,signal_hand,start_thread,??  1

关于"linux中如何使用strace追踪mysql执行语句"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

输出 系统 进程 时间 程序 跟踪 语句 情况 文件 篇文章 一行 信息 内容 参数 多个 方法 更多 次数 不同 不错 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 互联网科技公司名称 广州慧亚互联网科技怎么样 武汉健翔互联网络科技有限公司 千方科技属于互联网企业吗 互联网科技公司有风险吗 坤平互联网科技 互联网科技研发水平 互联网在线教育科技创业 高科技互联网发展前景如何 互联网科技实习生岗位 领航科技大厦互联网公司 下一代互联网重大应用科技园 半导体行业属于互联网高科技类吗 全球科技与互联网公司市值变化 吉林省码上互联网科技电话 互联网科技平台产品运营 互联网金融运营模式中的金融科技 安徽九吞吴互联网科技有限公司 六子台科技互联网展会 山东特亿宝互联网科技有限公司 互联网为科技 金融科技与互联网金融 互联网金融公司科技 广州互联网络科技有限公司 互联网科技logo 佩信高科技互联网 坤平互联网科技 互联网公司高科技产品 互联网科技自媒体灵感
0