天天看點

inotify_init報錯Too many open files的問題追蹤和解決

背景:在nodejs項目中使用iotify監控配置檔案動态變化,配置檔案較多(幾千個配置檔案)。在測試機器運作時無報錯資訊,線上上機器執行失敗,報錯:terminate called after throwing an instance of 'InotifyException',其中,iotify模闆是自己使用c++寫的so打包成nodejs子產品。

追蹤過程:1,使用strace node app.js執行,來追蹤系統調用細節,發現錯誤:inotify_init()                          = -1 EMFILE (Too many open files)

                     2,檢視 ulimit -n,嘗試調大系統的檔案描述符限制,重新執行,還是失敗

                     3,google到一些資訊,嘗試sysctl  fs.inotify.max_user_instances = 128 ;   sysctl  fs.inotify.max_user_watches = 8192。 問題解決