在Windows服务器上监控Rails应用的性能
原文地址:http://www.blogkid.net/archives/2290.html
Robbin写过一篇《监视Rails进程内存泄漏的技巧》,谈到了“如何监控rails进程的执行性能”。因为production.log文件已经记录了每一次请求执行的时间,所以通过一些命令的组合,把需要的数据提取、排序、输出到文件就可以了。但windows服务器上没有这些命令(如grep, awk等),怎么办呢?这篇文章能给出个解决办法,虽然稍显复杂。
要在windows上拥有linux的命令,Cygwin是一个办法,但我总觉得安装Cygwin太麻烦,于是我找了UnxUtils。下载后解压,然后在环境变量PATH中增加UnxUtils/usr/wbin目录。常用的linux命令已经被移植到windows了,包括但不限于wget, g(un)zip, tail, grep。
robbin在文章中提到的组合命令是这样的:
grep “200 OK” production.log | awk ‘{print ”ALL: ” $3 ” View: ” $8 ” DB: ” $12 ” URL: ” $17 }‘ | sort -r | head -n 500 > timing.log
我们需要进行一些修改:
首先,UnxUtils没有提供awk,但有个替代品gawk。同时,在windows上的gawk不能用形如’{…}’这样的参数格式,而只能用”{…}”(两边只能用双引号),相应地,内部的语句如果使用了双引号,就需要进行转义、
其次,UnxUtils没有提供sort命令,不过Windows提供了。但这里要稍作修改,把sort -r 改为sort /r。
修改之后就可以使用了,命令改为:
grep “200 OK” production.log | awk “{print \”ALL: \” $3 \” View: \” $8 \” DB: \” $12 \” URL: \” $17 }” | sort /r | head -n 500 > timing.log
如果想要更方便点,可以做一个批处理文件,在生成timing.log以后用记事本打开:
grep “200 OK” production.log | awk “{print \”ALL: \” $3 \” View: \” $8 \” DB: \” $12 \” URL: \” $17 }” | sort /r | head -n 500 > timing.log
notepad timing.log
将以上内容存为timing.bat即可。
这里其实还有个隐藏的问题,sort命令默认是按照字符串来排序,所以9.1会排在11.1的前面,实际上耗时11.1秒的请求是更耗时的。在linux上,在使用sort命令时增加一个-n参数,就可以以数字来排序。但在windows上,我还没找到合适的解决方法。


0 Responses to “在Windows服务器上监控Rails应用的性能”