starce的用途和参数:http://man.linuxde.net/strace(linux命令大全)
以下是学习strace时看到的比较好的文章,收藏以便随时学习!
1. 火丁笔记:
http://huoding.com/2013/10/06/288
内容:服务器负载过高解决:strace分析php调用系统耗时,里边用了pgrep命令,参看:http://www.cnblogs.com/leezhxing/p/4519279.html
http://huoding.com/2015/10/16/474
内容:手把手教你用Strace诊断问题
2.Nginx+PHP-FPM优化技巧总结 :
http://blog.csdn.net/dc_726/article/details/12340349
内容: php的各种技巧,还有一个看rango的php7中的图表工具。
3.使用strace追踪多个进程 :
http://www.ttlsa.com/tools/use-strace-to-track-multiple-processes/
内容:因为php-fpm会有多个进程,博客中写了个脚本,里边用了pidof命令,是显示全部进程pid的,敲一下就知道了。
pidof命令和pgrep命令有点像呢~~
4.利用strace调试nginx :
http://book.51cto.com/art/201305/395383.htm
内容:里边详细讲了每个strace的调用的含义,可以查看。
5.整理
strace分析nginx-fastcgi-php的调用:http://jackyrong.iteye.com/blog/1159278
strace分析redis的pconnect长连接:http://blog.csdn.net/qmhball/article/details/46988111
使用strace, ltrace寻找故障原因的线索 : http://blog.csdn.net/delphiwcdj/article/details/7387325
使用strace定位系统疑难杂症 : http://fishcried.com/2014-10-08/%E4%BD%BF%E7%94%A8strace%E8%BF%9B%E8%A1%8C%E8%B0%83%E8%AF%95/
6.一个论坛的提问:
strace -p PID分析php-fpm进程 at("/data/tdocs/webroot/go/./Widget/boutique.inc.php", 0x7fffc74cb320) = - ENOENT (No such file or directory)
lstat("/data/tdocs/webroot/go/./Widget/openapi.inc.php", 0x7fffc74cb320) = - ENOENT (No such file or directory)
lstat("/data/tdocs/webroot/go/./Widget/groupnew.inc.php", 0x7fffc74cb320) = - ENOENT (No such file or directory)
lstat("/data/tdocs/webroot/go/./Widget/groupStatistical.inc.php", 0x7fffc74cb320) = - ENOENT (No such file or directory)
lstat("/usr/share/pear/Widget/groupStatistical.inc.php", 0x7fffc74cb320) = - ENOENT (No such file or directory)
lstat("/usr/share/php/Widget/groupStatistical.inc.php", 0x7fffc74cb320) = - 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代码就有问题