背景:如何监视Ruby on Rails中的打开文件描述符?
最近我的Rails服务器出现问题,它会停止响应,需要反弹才能恢复运行。这个问题是由于一个控制器在接收到一个POST后做了一些分叉处理,以便执行一些重量级并发处理 - 服务器响应时间不断增加,直到服务器完全停止响应。我很确定我已经修复了这个问题(在fork上拷贝的数据库连接没有在子进程中被关闭),但是对权威性的测试来说是很棒的。
问:
有没有办法来监控从我的Rails应用程序内打开的文件描述符?它运行在Linux上,所以我一直在使用proc
文件系统和lsof
命令来观察打开的文件描述符;这很麻烦,因为它只给你一个当前进程的快照。理想情况下,我希望在处理之前,处理期间和处理之后在父进程和子进程中打开打开的文件描述符,以确保文件描述符不会超出欢迎。