starce的用途和参数:http://man.linuxde.net/strace(linux命令大全)
以下是学习strace时看到的比较好的文章,收藏以便随时学习!
1. 火丁笔记:
内容:服务器负载过高解决:strace分析php调用系统耗时,里边用了pgrep命令,参看:
内容:手把手教你用Strace诊断问题
2.Nginx+PHP-FPM优化技巧总结 :
内容: php的各种技巧,还有一个看rango的php7中的图表工具。
3.使用strace追踪多个进程 :
内容:因为php-fpm会有多个进程,博客中写了个脚本,里边用了pidof命令,是显示全部进程pid的,敲一下就知道了。
pidof命令和pgrep命令有点像呢~~
4.利用strace调试nginx :
内容:里边详细讲了每个strace的调用的含义,可以查看。
5.整理
strace分析nginx-fastcgi-php的调用:
strace分析redis的pconnect长连接:
使用strace, ltrace寻找故障原因的线索 :
使用strace定位系统疑难杂症 :
6.一个论坛的提问:
strace -p PID分析php-fpm进程at("/data/tdocs/webroot/go/./Widget/boutique.inc.php", 0x7fffc74cb320) = -1 ENOENT (No such file or directory)lstat("/data/tdocs/webroot/go/./Widget/openapi.inc.php", 0x7fffc74cb320) = -1 ENOENT (No such file or directory)lstat("/data/tdocs/webroot/go/./Widget/groupnew.inc.php", 0x7fffc74cb320) = -1 ENOENT (No such file or directory)lstat("/data/tdocs/webroot/go/./Widget/groupStatistical.inc.php", 0x7fffc74cb320) = -1 ENOENT (No such file or directory)lstat("/usr/share/pear/Widget/groupStatistical.inc.php", 0x7fffc74cb320) = -1 ENOENT (No such file or directory)lstat("/usr/share/php/Widget/groupStatistical.inc.php", 0x7fffc74cb320) = -1 ENOENT (No such file or directory) 怎么找不到文件呢?这是程序员写的程序有问题吗?
解答:
如果我在程序里用file_exists($file)来判断文件存不存在,如果这个文件不存在,你strace里就会显示这种情况,其实PHP代码没有错。
那就是你include文件的时候没使用绝对路径(include '/a.php')或者相对路径(include './a.php'),你直接使用了include 'a.php',这种情况的话,先从当前目录找到文件存不存在,然后再从include_path查看文件存不存在。 我这些都是打个比方,strace的提示,确实是PHP在找这个文件,没找到,但并不是说PHP代码就有问题