本篇文章為大家展示了如何進行SUSE LINUX系統(tǒng)文件句柄限制的修改,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)專注于彭陽網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供彭陽營銷型網(wǎng)站建設(shè),彭陽網(wǎng)站制作、彭陽網(wǎng)頁設(shè)計、彭陽網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務(wù),打造彭陽網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供彭陽網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
在SUSE Linux下部署應(yīng)用的時候,有時會遇到“Socket/File: Can’t open so many files”的問題,這其實是因為SUSE Linux系統(tǒng)的文件句柄限制造成的,一般系統(tǒng)默認(rèn)都是允許打開1024個文件,作為一臺生產(chǎn)環(huán)境的應(yīng)用服務(wù)器,是很容易就達到這個默認(rèn)值的,因此我們需要把這個值改大一些。
文件句柄釋義:在文件I/O中,要從一個文件讀取數(shù)據(jù),應(yīng)用程序首先要調(diào)用操作系統(tǒng)函數(shù)并傳送文件名,并選一個到該文件的路徑來打開文件。該函數(shù)取回一個順序號,即文件句柄(file handle),該文件句柄對于打開的文件是唯一的識別依據(jù)。要從文件中讀取一塊數(shù)據(jù),應(yīng)用程序需要調(diào)用函數(shù)ReadFile,并將文件句柄在內(nèi)存中的地址和要拷貝的字節(jié)數(shù)傳送給操作系統(tǒng)。當(dāng)完成任務(wù)后,在通過調(diào)用系統(tǒng)函數(shù)來關(guān)閉該文件。
下面我們看如何修改:
1、先查看系統(tǒng)默認(rèn)值
注意紅線標(biāo)注的“open files (-n) 1024”這行顯示文件句柄限制數(shù)量是1024,這個值對于實際生產(chǎn)環(huán)境的應(yīng)用服務(wù)器來說太小了。我們需要修改文件句柄的大小。
2、修改系統(tǒng)默認(rèn)文件句柄限制
#vi /etc/security/limits.conf
如果修改某個用戶的文件句柄限制數(shù)量,可以增加如下兩句:
你的用戶名 soft nofile 2048
你的用戶名 hard nofile 65536
如果將所有用戶的文件句柄限制統(tǒng)一修改,可以增加如下兩句:
* soft nofile 2048
* hard nofile 65536
注意wq保存退出。
我們添加的有soft, hard兩種限制:硬限制是實際的限制,而軟限制是warnning限制,只會做出warning。修改完保存重啟shell即可(有些系統(tǒng)可能需要重啟系統(tǒng),SUSE LINUX是不用的),再用ulimit -a 查看一下設(shè)置發(fā)現(xiàn)已成功。
3、ulimit其實就是對用戶和單一程序的限制,我們再看一下系統(tǒng)總限制:
查看系統(tǒng)總限制命令:
#cat /proc/sys/fs/file-max
查看整個系統(tǒng)目前使用的文件句柄數(shù)量命令:
#cat /proc/sys/fs/file-nr
如果要修改file-max和file-nr的值,需要通過vi /etc/sysctl.conf進行編輯修改,使用sysctl -p使其生效。
對于一般的應(yīng)用來說(Apache、系統(tǒng)進程)1024完全足夠使用,但是對于squid、MySQL、java等單進程處理大量請求的應(yīng)用來說就不夠用了。那么如何知道當(dāng)前進程打開了多少個文件句柄呢?我們可以通過這個來查看:
#lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
左邊一列是打開的文件句柄數(shù)量,第二列是進程ID號。如果系統(tǒng)并發(fā)特別大,文件句柄數(shù)很有可能會超過1024,這時候我們就必須要調(diào)整系統(tǒng)參數(shù),以適應(yīng)實際應(yīng)用的變化。
補充:
查看某個進程開了那些句柄:
#lsof -p pid
查看某個進程開了多少個句柄:
#lsof -p pid |wc -l
看某個文件/目錄被什么進程占用了,顯示已打開該目錄或文件的所有進程信息:
#lsof path/filename
上述內(nèi)容就是如何進行SUSE LINUX系統(tǒng)文件句柄限制的修改,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。