运维利器 strace

strace

了解 strace 和 ltrace。这俩工具在你的程序运行失败、挂起甚至崩溃,而你却不知道为什么或你想对性能有个总体的认识的时候是非常有用的。注意 profile 参数(-c)和附加到一个运行的进程参数 (-p)。

示例

命令

strace -tt -T -v -f -e trace=file -o /data/log/strace.log -s 1024 -p 23489

参数

-tt 在每行输出的前面,显示毫秒级别的时间
-T 显示每次系统调用所花费的时间
-v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f 跟踪目标进程,以及目标进程创建的所有子进程
-e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o 把strace的输出单独写到指定的文件
-s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。
调试程序
strace -tt -f  ./some_server ../conf/some_server.conf
调试一个已经运行的程序

获取nginx pid

pidof nginx
1111

追踪, 测试追踪效果,nginx -s reload

strace -p 1111
调试程序启动过程中加载的文件

这里的输出只显示和文件访问有关的内容,这是因为我们通过-e trace=file 选项指定了。

strace -tt -T -f -e trace=file -s 1024 -o output.log nginx -s reload

经验

天知道程序干了些什么导致无法启动或报错, 这个命令用来分析一些行为是非常有用的

比如, 无法程序启动缺少配置文件, 或者是没有权限, 但是程序没有明确提示, 这个时候就可以用strace追踪了

laravel 中的使用例子, 可以分析文件加载的先后顺序

strace -tt -T -f -e trace=file -s 1024 -o output.log php artisan list

当然这个用在swoole中的场景更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值