2009-07-15 20 views
1

我最近開始在我們的Tomcat服務器上發現錯誤:「太多打開文件」,並且錯誤在於引用用於服務器的SSL連接器的密鑰庫文件。有誰知道這可能來自哪裏?我們的服務器接收到大量的連接,但如果我將最大可接受的連接數推到150以上,那麼服務器甚至不會啓動(無論出於何種原因)。有什麼辦法讓Tomcat將密鑰庫緩存在內存中,這樣連接就不必重複讀取文件了?Tomcat密鑰庫中的「打開的文件太多」

+1

哪個操作系統/平臺? – 2009-07-15 11:56:20

回答

1

我假設你在Linux上運行,因爲那是我的答案。

第一步是檢查打開的文件的ulimit,並嘗試將其設置在外殼高:

ulimit -n 

這可能會打印1024,這是Linux的「正常」的用戶限制。嘗試設置更高的數字:

ulimit -n 2048 

如果成功了,太棒了。把這個命令放在你的登錄腳本中,你應該很好走。如果不是,那麼你需要增加每個用戶的限制。根據this document,你想要編輯的文件是/etc/security/limits.conf

順便說一下,你(可能)沒有看到這個,因爲Tomcat一直在閱讀相同的文件。 JVM通常會打開(和內存映射)應用程序使用的所有JAR文件,並且可能還會爲配置文件保留打開的文件句柄。打開密鑰庫文件時恰好碰到了限制。