精华帖 (2) :: 良好帖 (19) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-01
最后修改:2008-12-01
PragDave的博客上面学来的技巧,很实用,很cool!
这是一个从
话说在一个运行着Rails的网站上面,我们可以用Linux的top命令来监控Rails应用程序实例的运行状况,占用的内存,消耗的CPU等等,例如JavaEye网站的某一刻的截图: 在这个截图里面,我们可以了解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就被我们欺骗了: 乖乖的给我显示出来我当前处理请求的URI是 /blog/283416,其实就是我的这篇博客:对领域模型实现的总结性观点。 是不是很酷!如果Rails应用正在处理该请求,那么top显示 /blog/283416,如果Rails应用已经处理完该请求,那么top显示 /blog/283416* ,再来一个全一点的,给大家过过瘾 提醒:top命令启动以后,要按“c”,切换到显示完整命令的模式才能显示处理URI。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-01
很cool. 想了解下加这个filter对性能是否会有影响?
|
|
返回顶楼 | |
发表时间:2008-12-01
playcase 写道 很cool. 想了解下加这个filter对性能是否会有影响? 没啥影响。 |
|
返回顶楼 | |
发表时间:2008-12-01
可惜在 BSD 系统上不管用。
|
|
返回顶楼 | |
发表时间:2008-12-01
好阿,确实很实用
|
|
返回顶楼 | |
发表时间:2008-12-01
相当不错,用在脚本上,就可以知道脚本的运行情况了,哈哈
|
|
返回顶楼 | |
发表时间:2008-12-01
确实很酷.
脚本语言的天堂. |
|
返回顶楼 | |
发表时间:2008-12-01
这个也想到了,赞一个。
|
|
返回顶楼 | |
发表时间:2008-12-02
过瘾的不得了~
|
|
返回顶楼 | |
发表时间:2008-12-02
php有做到这个的可能吗?
|
|
返回顶楼 | |