2017-05-16 40 views

回答

1

你可能在你的應用程序connection泄漏,這就是爲什麼開放一次function完成它的執行connections沒有關閉。

我可能會查看應用程序代碼,看看connections/preparedstatement(如果它是java)對象沒有關閉並修復它。

快速解決方法是增加服務器的ulimit(解釋爲here),這會增加打開文件描述符的數量(即connections)。但是,如果您有連接泄漏,您將在稍後階段再次遇到此錯誤。

+0

謝謝Darshan。我已經多次驗證任何連接泄漏。沒有泄漏w.r.t.連接。 –

1

當我在同一時間使用多個數據庫時,我太頻繁地得到errno: 24 - Too many open files

解決方案

  • 確保連接緊密propertly
  • 編輯/etc/systemd/system.conf數據庫服務器。取消註釋並

    DefaultLimitNOFILE=infinity 
    DefaultLimitMEMLOCK=infinity 
    

    然後運行systemctl daemon-reloadservice mysql restart

您可以使用查詢:SHOW GLOBAL VARIABLES LIKE 'open_files_limit'檢查結果,您可能會注意到該值已更改。你現在不應該有任何errno 24。

請注意,該解決方案可能與其他操作系統/版本不同。您可以嘗試先找到變量。使用Ubuntu 16.04.3和mysql 5.7.19進行測試。

在我的情況下,在mysql配置文件中設置open_files_limit變量是無用的,因爲該變量被標記爲只讀。

我希望它有幫助!