2011-09-28 113 views
1

背景:如何监视Ruby on Rails中的打开文件描述符?

最近我的Rails服务器出现问题,它会停止响应,需要反弹才能恢复运行。这个问题是由于一个控制器在接收到一个POST后做了一些分叉处理,以便执行一些重量级并发处理 - 服务器响应时间不断增加,直到服务器完全停止响应。我很确定我已经修复了这个问题(在fork上拷贝的数据库连接没有在子进程中被关闭),但是对权威性的测试来说是很棒的。

问:

有没有办法来监控从我的Rails应用程序内打开的文件描述符?它运行在Linux上,所以我一直在使用proc文件系统和lsof命令来观察打开的文件描述符;这很麻烦,因为它只给你一个当前进程的快照。理想情况下,我希望在处理之前,处理期间和处理之后在父进程和子进程中打开打开的文件描述符,以确保文件描述符不会超出欢迎。

回答

0

一种方法来考虑(可能是最简单)是使用某种类型的后台工作,如用Workling,并使其在间隔运行lsof,并使用语法获得输出:

`lsof | grep something` # shell command example. 

程序,如如果运行太频繁,lsof确实会损害性能。也许每10到30年。也许下降到5秒,但这确实在推动它。我假设你有一个专用的服务器或一个讨厌的虚拟机。

在您的后台工作人员中,您可以将这些命令结果存储到一个变量中,或者将其下载到您真正想要的内容(如演示),并根据需要访问/操作数据。

相关问题