運行我的應用程序時,我有時會收到有關too many files open
的錯誤。如何更改Linux中打開的文件數限制?
正在運行ulimit -a
報告限制爲1024.如何增加1024以上的限制?
編輯 ulimit -n 2048
導致許可錯誤。
運行我的應用程序時,我有時會收到有關too many files open
的錯誤。如何更改Linux中打開的文件數限制?
正在運行ulimit -a
報告限制爲1024.如何增加1024以上的限制?
編輯 ulimit -n 2048
導致許可錯誤。
你總是可以試着做一個ulimit -n 2048
。這隻會重置限制當前的外殼和您指定的號碼不能超過硬限制
每個操作系統都有一個配置文件不同的硬限制設置。例如,Solaris上的硬打開文件限制可以從/ etc/system啓動時設置。
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
在OS X上,必須在/etc/sysctl.conf中設置相同的數據。
kern.maxfilesperproc=166384
kern.maxfiles=8192
在Linux下,這些設置通常在/etc/security/limits.conf中。
有兩種限制:
軟限制可以由任何用戶設置,而硬限制只能由root進行更改。 限制是一個過程的屬性。它們在創建子進程時被繼承,因此應該在初始化腳本的系統初始化過程中設置系統範圍的限制,並且應在用戶登錄期間設置用戶限制,例如使用pam_limits。
機器引導時通常會設置默認值。因此,即使您可能會在單個shell中重置ulimit,您也可能會發現它在重新啓動時會重置爲以前的值。如果您想更改默認值,您可能需要爲存在ulimit命令grep引導腳本。
如果您使用的是Linux並且出現權限錯誤,則需要提高/etc/limits.conf
或/etc/security/limits.conf
文件(文件所在的位置取決於您的特定Linux版本)的允許限制。
例如,要允許機器上的任何人將打開的文件數增加到10000,請將該行添加到limits.conf
文件中。
* hard nofile 10000
然後註銷重新登錄和你的系統,你應該能夠做到:
ulimit -n 10000
沒有權限錯誤。
1)下面的行添加到/etc/security/limits.conf
webuser hard nofile 64000
然後登錄爲WEBUSER
su - webuser
2)以下兩個文件爲WEBUSER
追加的.bashrc和.bash_profile中編輯通過運行文件
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3)註銷,然後重新登錄並驗證更改已正確地做出:
$ ulimit -a | grep open
open files (-n) 64000
這就是它和他們咚,咚熱潮。
如果您的某些服務正在成爲ulimits,那麼將適當的命令放入服務的init腳本有時會更容易。例如,當Apache是報告
[警示](11)資源暫時不可用:apr_thread_create:無法創建工作線程
儘量把ulimit -s unlimited
到/etc/init.d/httpd
。這不需要重新啓動服務器。
另請參閱:https://unix.stackexchange.com/a/8949/231660 – 2017-12-11 19:36:05