Fork me on GitHub

strace命令测试练习

使用strace命令查看php程序响应http请求的过程

测试主机A :

  1. 在目录/home/xiao5/demo下创建php文件, 使用内置服务器启动, 脚本内容为睡眠3秒
  2. 追踪php进程, 将输出打印到/tmp/output.txt
  3. 在另一个终端调用服务
  4. 结束strace任务, 查看/tmp/output.txt打印内容

image-20211201172756089

image-20211201172716435

image-20211201173319854

日志分析:

说明 : 这里打印的方法都是c语言的函数, 一个个对照看文档可以理解过程; 每行最后一个值代表每个函数运行的时间

  1. 接受一个socket连接 (连接保存到4)
  2. 获取工作目录
  3. 打开指定的php脚本文件
  4. 获得文件状态
  5. 读取脚本内容
  6. 关闭文件
  7. 查询或设置一些信号
  8. 切换到工作目录
  9. 创建微秒定时器
  10. 获取当前时间戳
  11. 给socket连接返回内容
  12. 获取当前时间戳
  13. 把日期字符串写到某个位置 (2指向的文件句柄, 不知道指向哪里)
  14. 终止socket通信
  15. 关闭连接

image-20211201173454288

8593  17:32:45.206754 nanosleep({3, 0}, 0x7ffd9634b5b0) = 0 <3.000129>

耗时3.000129s, 可以定位该请求的问题出现在nanosleep函数, 即php的sleep函数

posted @ 2021-12-16 19:13  llbrh  阅读(39)  评论(0)    收藏  举报