• strace


    简介:
    strace跟踪程序使用的底层系统调用,输出系统调用被执行的时间点以及各个调用耗时
    
    [root@Dev-P02-CDF1 ~]# strace -T -tt  ping www.baidu.com  
    #参数说明:-T 显示每一调用所耗费的时间
               -tt 在输出的前边加上时间,微秒级
    #如何保存输出日志:
               -o 参数 example:[root@Dev-P02-CDF1 ~]# strace -T -tt  -o strace.log ping www.baidu.com
               输出重定向:[root@Dev-P02-CDF1 ~]# strace -T -tt   ping www.baidu.com   2> strace.log
    日志内容截取:
    ......
    14:24:01.960937 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 4 <0.000033>
    14:24:01.961015 connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.41.154")}, 16) = 0 <0.000034>
    14:24:01.961104 poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}]) <0.000027>
    14:24:01.961176 sendto(4, "377i113www5baidu3com11", 31, MSG_NOSIGNAL, NULL, 0) = 31 <0.000039>
    14:24:01.961263 poll([{fd=4, events=POLLIN}], 1, 5000) = 0 (Timeout) <5.000899>
    14:24:06.962238 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 5 <0.000040>
    ......
    
    由此可看到是socket连接时有超时问题,详情看sin_port此参数是53,发现是DNS查询的调用;DNS地址是192.168.41.154。查询此NDS耗时5秒
    我们去/etc/resolve.conf文件注释此行
    [root@Dev-P02-CDF1 ~]# vi /etc/resolv.conf
    # Generated by NetworkManager
    #nameserver 192.168.41.154
    nameserver 192.168.130.7
    
    ping命令耗时对比:
    [root@Dev-P02-CDF1 ~]# time ping www.baidu.com
    PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
    ^C64 bytes from 220.181.111.188: icmp_seq=1 ttl=52 time=3.48 ms
    
    --- www.a.shifen.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 5009ms
    rtt min/avg/max/mdev = 3.483/3.483/3.483/0.000 ms
    
    real    0m10.018s
    user    0m0.001s
    sys     0m0.002s
    
    [root@Dev-P02-CDF1 ~]# time ping www.baidu.com
    PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
    64 bytes from 220.181.111.188: icmp_seq=1 ttl=52 time=3.34 ms
    64 bytes from 220.181.111.188: icmp_seq=2 ttl=52 time=3.26 ms
    ^C
    --- www.a.shifen.com ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1119ms
    rtt min/avg/max/mdev = 3.265/3.306/3.348/0.070 ms
    
    real    0m1.123s
    user    0m0.001s
    sys     0m0.003s
    
    示例:
    1.跟踪nginx, 看其启动时都访问了哪些文件
    strace -tt -T -f -e trace=file -o /data/log/strace.log -s 1024 2>&1 ./nginx
    2. 定位程序异常退出
    strace -ttf -T -p 10893 -o tmp -e trace=process 2>&1
    3.程序启动加载文件
    strace -e open,acces ./sh 2>&1 | grep fileName
    4. 查选程序耗时
    strace -c -p 11084
    5.链接服务器失败
    strace -e poll,select,connect,recvfrom,sendto nc www.baidu.com 80
    
    
    strace一个现有的进程
    
    打开5912进程相关的FD:
    ll /proc/5912/fd/
    lrwx------ 1 oracle dba 64 Dec 30 10:55 18 -> /db/databases/orcl/redo-01-a/redo-t01-g01-m1.log 
    lrwx------ 1 oracle dba 64 Dec 30 10:55 19 -> /db/databases/orcl/redo-03-a/redo-t01-g01-m2.log 
    lrwx------ 1 oracle dba 64 Dec 30 10:55 20 -> /db/databases/orcl/redo-02-a/redo-t01-g02-m1.log 
    lrwx------ 1 oracle dba 64 Dec 30 10:55 21 -> /db/databases/orcl/redo-04-a/redo-t01-g02-m2.log 
    lrwx------ 1 oracle dba 64 Dec 30 10:55 22 -> /db/databases/orcl/redo-01-a/redo-t01-g03-m1.log 
    lrwx------ 1 oracle dba 64 Dec 30 10:55 23 -> /db/databases/orcl/redo-03-a/redo-t01-g03-m2.log
    lrwx------ 1 oracle dba 64 Dec 30 10:55 24 -> /db/databases/orcl/redo-02-a/redo-t01-g04-m1.log 
    lrwx------ 1 oracle dba 64 Dec 30 10:55 25 -> /db/databases/orcl/redo-04-a/redo-t01-g04-m2.log
    
    来自: http://man.linuxde.net/strace
    

      

  • 相关阅读:
    在Springboot 中使用 flyway
    Ryu 学习资料总结
    OpenDaylight 学习资料整理
    在 Ubuntu16.04 上安装 etcd
    ovs 连接 Floodlight 控制器
    etcd 学习资料整理
    Floodlight 学习资料整理
    算法用例
    数据库
    他山之石
  • 原文地址:https://www.cnblogs.com/wanyp/p/7109970.html
Copyright © 2020-2023  润新知