Loading...

    AD: 猛买网,精彩团购 | Jobsdigg | 很棒的男装店 | 网站地图

在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应用的性能”


  1. No Comments

Leave a Reply