《LINUX學(xué)習(xí):Too many open files 問(wèn)題解決方法》要點(diǎn):
本文介紹了LINUX學(xué)習(xí):Too many open files 問(wèn)題解決方法,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
查看當(dāng)前系統(tǒng)打開(kāi)的文件數(shù)量
lsof | wc -l?
watch "lsof | wc -l"
查看某一進(jìn)程的打開(kāi)文件數(shù)量
lsof -p pid | wc -l?
lsof -p 1234 | wc -l
該問(wèn)題最大的可能是打開(kāi)的文件或是socket沒(méi)有正常關(guān)閉.為了定位問(wèn)題是否由Java進(jìn)程引起,通過(guò)Java進(jìn)程號(hào)查看當(dāng)前進(jìn)程占用文件描述符情況:
lsof -p $java_pid ?# 每個(gè)文件描述符的具體屬性?
lsof -p $java_pid | wc -l ? # 當(dāng)前Java進(jìn)程file descriptor table中FD的總量
?
排序查看當(dāng)前進(jìn)程打開(kāi)了多少句柄數(shù)
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
系統(tǒng)級(jí)設(shè)置對(duì)所有用戶(hù)有效.可通過(guò)以下方式查看系統(tǒng)最大文件限制
Linux限制每個(gè)登錄用戶(hù)的可連接文件數(shù).可通過(guò)ulimit -n來(lái)查看當(dāng)前有效設(shè)置.如果想修改這個(gè)值就使用 ulimit -n <setting number> 命令.
對(duì)于文件描述符增加的比例,資料推薦是以2的冪次為參考.如當(dāng)前文件描述符數(shù)量是1024,可增加到2048,如果不夠,可設(shè)置到4096,依此類(lèi)推.
句柄是表示你的進(jìn)程與外界的i/o連接,文件句柄是一個(gè)十六位長(zhǎng)度的二進(jìn)制代碼(Windows95后為32位無(wú)符號(hào)整數(shù)),代表一個(gè)已被打開(kāi)文件的通道號(hào),借助于這個(gè)句柄,你的應(yīng)用程序即可使用這個(gè)相應(yīng)的句柄對(duì)文件進(jìn)行隨意存取操作,說(shuō)白了文件句柄其實(shí)是一串代表著特殊含義的號(hào)碼; 當(dāng)然其實(shí)系統(tǒng)是用句柄與一些資源聯(lián)系起來(lái)的,當(dāng)由系統(tǒng)管理,動(dòng)態(tài)分配給你應(yīng)用程序的某些資源的代號(hào),你就可以使用句柄訪問(wèn)相應(yīng)的資源了,尤其在Windows系統(tǒng)中,有很多東東都使用句柄,如窗口,socket.
簡(jiǎn)單看來(lái)程序通過(guò)句柄獲得資源的引用,來(lái)進(jìn)行資源的打開(kāi)和關(guān)閉的操作.
主要是因?yàn)閘inux在文件句柄的數(shù)目上有兩個(gè)級(jí)別的限制.一個(gè)是系統(tǒng)級(jí)別的總數(shù)限制,一個(gè)是針對(duì)用戶(hù)的限制.默認(rèn)情況下每個(gè)用戶(hù)所能使用的句柄數(shù)是1024.一般情況下1024也夠用了,但是在大容量的系統(tǒng)上,特別是會(huì)頻繁使用網(wǎng)絡(luò)通信和文件IO的系統(tǒng)上,1024很快就被耗光了.所以首先我們要調(diào)整這個(gè)值.
?
學(xué)習(xí)更多LINUX教程,請(qǐng)查看站內(nèi)專(zhuān)欄,如果有LINUX疑問(wèn),可以加QQ交流《LINUX學(xué)習(xí):Too many open files 問(wèn)題解決方法》。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/9039.html