背景:如何監視Ruby on Rails中的打開文件描述符?
最近我的Rails服務器出現問題,它會停止響應,需要反彈才能恢復運行。這個問題是由於一個控制器在接收到一個POST後做了一些分叉處理,以便執行一些重量級併發處理 - 服務器響應時間不斷增加,直到服務器完全停止響應。我很確定我已經修復了這個問題(在fork上拷貝的數據庫連接沒有在子進程中被關閉),但是對權威性的測試來說是很棒的。
問:
有沒有辦法來監控從我的Rails應用程序內打開的文件描述符?它運行在Linux上,所以我一直在使用proc
文件系統和lsof
命令來觀察打開的文件描述符;這很麻煩,因爲它只給你一個當前進程的快照。理想情況下,我希望在處理之前,處理期間和處理之後在父進程和子進程中打開打開的文件描述符,以確保文件描述符不會超出歡迎。