这是一个从[url=http://pragdave.blogs.pragprog.com/pragdave/2008/11/trivial-request-logging-for-rails.html]PragDave的博客[/url]上面学来的技巧,很实用,很cool!
话说在一个运行着Rails的网站上面,我们可以用Linux的top命令来监控Rails应用程序实例的运行状况,占用的内存,消耗的CPU等等,例如JavaEye网站的某一刻的截图:
[img]/upload/attachment/54857/f1b0722f-0822-3c56-9849-7ada02610e4d.jpg[/img]
在这个截图里面,我们可以了解Rails进程实例的运行状况,但是我们无法确切的知道,某个当前时刻消耗CPU很高的fcgi进程究竟在执行哪个请求,如果能够确切的了解这个信息,对于寻找性能瓶颈有极大的帮助,所以下面看我们来变个魔术:
在你的Rails应用的app/controllers/application.rb里面增加两个filter,如下:
在ruby语言中$0是应用程序的命令行,因为我们以fcgi方式启动Rails,所以默认显示为dispatch.fcgi,但我们现在要改变$0,把URI强行赋值给$0,然后top就被我们欺骗了:
[img]/upload/attachment/54859/4300d2cf-8f13-3293-a666-223dc1bae6f9.jpg[/img]
乖乖的给我显示出来我当前处理请求的URI是 /blog/283416,其实就是我的这篇博客:[url=http://robbin.iteye.com/blog/283416]对领域模型实现的总结性观点[/url]。
是不是很酷!如果Rails应用正在处理该请求,那么top显示 /blog/283416,如果Rails应用已经处理完该请求,那么top显示 /blog/283416* ,再来一个全一点的,给大家过过瘾
[img]/upload/attachment/54939/38f36da7-e4c7-3d76-947b-cea70a1ccb5e.jpg[/img]
[i]
提醒:top命令启动以后,要按“c”,切换到显示完整命令的模式才能显示处理URI。[/i]
话说在一个运行着Rails的网站上面,我们可以用Linux的top命令来监控Rails应用程序实例的运行状况,占用的内存,消耗的CPU等等,例如JavaEye网站的某一刻的截图:
[img]/upload/attachment/54857/f1b0722f-0822-3c56-9849-7ada02610e4d.jpg[/img]
在这个截图里面,我们可以了解Rails进程实例的运行状况,但是我们无法确切的知道,某个当前时刻消耗CPU很高的fcgi进程究竟在执行哪个请求,如果能够确切的了解这个信息,对于寻找性能瓶颈有极大的帮助,所以下面看我们来变个魔术:
在你的Rails应用的app/controllers/application.rb里面增加两个filter,如下:
before_filter :set_process_name_from_request
after_filter :unset_process_name_from_request
def set_process_name_from_request
$0 = request.path[0,16]
end
def unset_process_name_from_request
$0 = request.path[0,15] + "*"
end
在ruby语言中$0是应用程序的命令行,因为我们以fcgi方式启动Rails,所以默认显示为dispatch.fcgi,但我们现在要改变$0,把URI强行赋值给$0,然后top就被我们欺骗了:
[img]/upload/attachment/54859/4300d2cf-8f13-3293-a666-223dc1bae6f9.jpg[/img]
乖乖的给我显示出来我当前处理请求的URI是 /blog/283416,其实就是我的这篇博客:[url=http://robbin.iteye.com/blog/283416]对领域模型实现的总结性观点[/url]。
是不是很酷!如果Rails应用正在处理该请求,那么top显示 /blog/283416,如果Rails应用已经处理完该请求,那么top显示 /blog/283416* ,再来一个全一点的,给大家过过瘾
[img]/upload/attachment/54939/38f36da7-e4c7-3d76-947b-cea70a1ccb5e.jpg[/img]
[i]
提醒:top命令启动以后,要按“c”,切换到显示完整命令的模式才能显示处理URI。[/i]