Linux利器strace(4)
4510 time(NULL) = 1295425149
//-- 加载hello.inc, 对应php代码include DOCUMENT_ROOT . '/hello.inc'
4510 lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
4510 lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
4510 lstat64("/var/www/ep", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
4510 lstat64("/var/www/ep/hello.inc", {st_mode=S_IFREG|0644, st_size=29, ...}) = 0
4510 open("/var/www/ep/hello.inc", O_RDONLY) = 4
4510 fstat64(4, {st_mode=S_IFREG|0644, st_size=29, ...}) = 0
4510 read(4, "\n", 8192) = 29
4510 read(4, "", 8192) = 0
4510 read(4, "", 8192) = 0
4510 close(4) = 0
//-- 将响结果输出给Nginx,并且关闭连接
4510 write(3, "\1\6\0\1\0V\2\0X-Powered-By: PHP/5.2.10"..., 96) = 96
4510 setitimer(ITIMER_PROF, {it_interval={0, 0}, itvalue={0, 0}}, NULL) = 0
4510 write(3, "\1\3\0\1\0\10\0\0\0\0\0\0\0ere", 16) = 16
4510 shutdown(3, 1 /* send */) = 0
4510 recv(3, "\1\5\0\1\0\0\0\0", 8, 0) = 8
4510 recv(3, "", 8, 0) = 0
4510 close(3) = 0
通过跟踪php-cgi,我们可以知道,相较与其它二种方法include ‘./hello.inc’的性能是最高的。这里看到strace输出都被截断了,如果你需要看到更多的输出,可以通过-s选项,让strace输出更多内容。
当你发现某个http请求造成CPU占用效骤然升高,你可以通过strace跟踪查找问题的根源。同时,你也可以通过strace -c统计监控你的优化是否生效
#2. MySQL执行语句列表
当发生个http请求的时候,很多时候希望得到这个http请求发生了多少次数据库SELECT操作,是否在同一个mysql connection连接里面完成。这里以访问本页为例子,通过strace来跟踪这些MySQL SELECT查询语句。
//-9514是mysqld的进程号,为了看到整条SQL语句,我们通过-s 1024希望输出更多内容
#strace -f -F -ff -o strace-mysqld -s 1024 -p 9514
#find . -name "strace-mysqld*" -type f -print |xargs grep -n "SELECT.*FROM wp_"
./strace-mysqld.19203:64:
read(19, "\3SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'", 72) = 72
相关新闻>>
- 发表评论
-
- 最新评论 更多>>