千家信息网

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

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章将为大家详细讲解有关linux中如何使用strace追踪mysql执行语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。strace是Linux环境下的一款
千家信息网最后更新 2025年01月23日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安全错误 数据库的锁怎样保障安全 sql数据库加新的一列 本地服务器地址可以用哪两个表示 免费的服务器防护 无源光网络技术及应用. 河南19寸服务器机柜云服务器 腾讯网络安全方案 软件开发项目工作计划表 软件开发测试内部报告 对数据库对象安全控制器 数据库中程序与数据怎样联系 达梦数据库端口映射 艾尔登法环总是与服务器断开 网络安全数据提取的风险等级 计算机学习网络技术什么 服务器安全软件排名 越南服务器好还是新加坡服务器好 软件开发影响实施效果 邮箱的接收服务器 临汾政务软件开发定制 打开数据库监视 如何保持网络安全英语作文建议信 it软件开发哪家专业 广州英国专线服务器 家政服务信息管理系统数据库 北京惠搜网络技术有限公司 江苏办公系统软件开发怎么样 空间数据库管理系统特点 嘉定区创新数据库活动简介 吉林机电软件开发怎么样 数据库的发展历史分类
0