轉: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