抱歉,隔了好几天才回。接近年关,零碎时间变得更少了。花了好些天,才学习上这些新的工具。
一开始是macosx系统,没办法直接使用systemtap。所以,搞了个虚拟机centos 7 , 内核版本:3.10.0-327.3.1.el7.x86_64 。 花了点时间重新搭建了环境。
为了观测nginx进程,采用了 https://github.com/openresty/nginx-systemtap-toolkit#sample-bt 这个脚本。
./sample-bt -p 27414 -t 5 -u -k > gzdecode.bt
...blablabla...
WARNING: too many pending (warning) messages
WARNING: Time's up. Quitting now...(it may take a while)
ERROR: Skipped too many probes, check MAXSKIPPED or try again with stap -t for more details.
在监控追踪的同时,我会去请求服务器端的解压脚本(http_load 以及循环curl post两种都尝试了)
这里有一个问题,那就是sample.bt 会卡在最后一步很久,然后失败。 在多次的实验中,只有一次成功输出可用的追踪数据,生成flame图。
同理还测试过:sample-bt-off-cpu、sample-bt-vfs 都是最后一步卡好久,然后失败。
春哥,这个脚本工具在使用过程中有没有什么需要注意的地方?是否符合我当前的使用需求?
在 2016年1月3日星期日 UTC+8上午1:32:30,agentzh写道:
Hello!
2016-01-01 23:37 GMT-08:00 Yumin Xie:
> 其实两个测试环境都是 nginx + php
>
> 最开始的想法,要模拟整个请求过程--从客户端到服务器再返回给客户端。这整个过程中,只有一个变量不一样,那就是解压发生的阶段--一个在nginx就解压了,一个在服务端php脚本解压。所以直接用的xhprof来检测客户端php脚本。因为客户端的请求脚本是一样的,那么如果有差距也应该是服务器层的差距。
>
我有一种理论,即你两个服务器端实际使用的压缩级别(compression level)不一样,而 nginx
使用的压缩比率更高,所以解压也需要客户端花费更多的 CPU 时间。
Regards,
-agentzh