天天看點

tomcat 報 “too many open files Too many open files" 問題的解決思路

轉:http://blog.csdn.net/big1980/article/details/6166122

linux系統出現Too many open files 錯誤,這是因為檔案描述符大小不夠,或者有不正常的網絡連接配接(Socket也是一種特殊的檔案)、

檔案IO沒有關閉并釋放出檔案描述符(檔案句柄,File Operator)。

網上可以查詢到解決方法 ,但是試了好幾次都不成功,為什麼呢?

先看下網上提供的方法

ulimit -u 檢視open files設定 預設好像是1024 linux

ulimit -a 檢視所有設定

ulimit -u 65535(新的open files 值)修改設定

ulimit -n 65536 設定使用者可以同時打開的最大檔案數(max open files) 預設是2048

如果本參數設定過小,對于并發通路量大的網站,可能會出現too many open files的錯誤

使用lsof -p pid [httpd程序的 pid、java的pid]來檢視系統中apache程序和java運作時程序目前打開的檔案資源,發現兩者之和已

經接近1024,大于了預設的設定

1、修改配置:(我看機器上好像都有)

修改/etc/security/limits.conf,在檔案末加上

* soft nofile 65536

* hard nofile 65536

2、檢查 /etc/bashrc檔案

看是否有 ulimit -n 2048 ,有的話注釋掉

3、修改 /etc/profile 檔案

添加

ulimit -u 65535

ulimit -SHn 65535

4、 /etc/pam.d/su /etc/pam.d/sshd /etc/pam.d/login 檔案中添加

session required pam_limits.so

這個也看到過 ,加不加不知道有沒有效果

5、修改 /etc/security/limits.d/90-nproc.conf

* soft nproc 10240

這個很少有看到

最終設定好後,重新登入下,檢查下

ulimit -u

ulimit -n