linux句柄数不足的java报错_linux中文件句柄数问题
問題描述:
有時(shí)候業(yè)務(wù)比較繁忙時(shí),就會(huì)出現(xiàn)如下問題
too?many?open?files:顧名思義即打開過多文件數(shù)。不過這里的files不單是文件的意思,也包括打開的通訊鏈接(比如socket),正在監(jiān)聽的端口等等,所以有時(shí)候也可以叫做句柄(handle),這個(gè)錯(cuò)誤通常也可以叫做句柄數(shù)超出系統(tǒng)限制。
1. 基本解決方法:
系統(tǒng)默認(rèn)的ulimit對文件打開數(shù)量的限制是1024,修改/etc/security/limits.conf并加入以下配置,永久生效
* soft nofile 65535
* hard nofile 65535
硬限制是實(shí)際的限制,而軟限制,是warnning限制,超過這個(gè)數(shù)值只會(huì)做出warning
注意:
1)這個(gè)限制是針對單個(gè)程序的限制
2)這個(gè)限制不會(huì)改變之前已經(jīng)運(yùn)行了的程序的限制
2. 查找文件句柄問題的時(shí)候,還有一個(gè)很實(shí)用的程序lsof。可以很方便看到某個(gè)進(jìn)程開了那些句柄,也可以看到某個(gè)文件/目錄被什么進(jìn)程占用了。
例如分析句柄數(shù),查找原因,這是解決問題最根本的辦法。那么如何分析那,就需要用到lsof這個(gè)命令了
(1)統(tǒng)計(jì)各進(jìn)程打開句柄數(shù):lsof?-n|awk?'{print?$2}'|sort|uniq?-c|sort?-nr
(2)統(tǒng)計(jì)各用戶打開句柄數(shù):lsof?-n|awk?'{print?$3}'|sort|uniq?-c|sort?-nr
(3)統(tǒng)計(jì)各命令打開句柄數(shù):lsof?-n|awk?'{print?$1}'|sort|uniq?-c|sort?-nr
3. 系統(tǒng)中還有一個(gè)/proc/sys/file-max的文件,?表示系統(tǒng)所有進(jìn)程一共可以打開的文件數(shù)量
通常這個(gè)系統(tǒng)級(jí)硬限制是Linux系統(tǒng)在啟動(dòng)時(shí)根據(jù)系統(tǒng)硬件資源狀況計(jì)算出來的最佳的最大同時(shí)打開文件數(shù)限制,如果沒有特殊需要,不應(yīng)該修改此限制,除非想為用戶級(jí)打開文件數(shù)限制設(shè)置超過此限制的值。
修改方法如下
方法一: echo? 6553560 > /proc/sys/fs/file-max
方法二:/etc/sysctl.conf, 加入fs.file-max = 6553560,執(zhí)行如下命令生效:sysctl -p
另外還有一個(gè)常用命令,/proc/sys/fs/file-nr,可以看到整個(gè)系統(tǒng)目前使用的文件句柄數(shù)量
可以執(zhí)行自動(dòng)腳本如下
sed -i -e '44 i?* soft nofile 65535' -e '44 i?* hard nofile 65535' /etc/security/limits.conf
echo? 6553560 > /proc/sys/fs/file-max
參考:
https://www.cnblogs.com/feng0815/p/8620564.html
總結(jié)
以上是生活随笔為你收集整理的linux句柄数不足的java报错_linux中文件句柄数问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小愿景,职业发展,思维拓展
- 下一篇: Linux搭建Nextcloud,打造属