您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何進行SUSE LINUX系統文件句柄限制的修改,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在SUSE Linux下部署應用的時候,有時會遇到“Socket/File: Can’t open so many files”的問題,這其實是因為SUSE Linux系統的文件句柄限制造成的,一般系統默認都是允許打開1024個文件,作為一臺生產環境的應用服務器,是很容易就達到這個默認值的,因此我們需要把這個值改大一些。
文件句柄釋義:在文件I/O中,要從一個文件讀取數據,應用程序首先要調用操作系統函數并傳送文件名,并選一個到該文件的路徑來打開文件。該函數取回一個順序號,即文件句柄(file handle),該文件句柄對于打開的文件是唯一的識別依據。要從文件中讀取一塊數據,應用程序需要調用函數ReadFile,并將文件句柄在內存中的地址和要拷貝的字節數傳送給操作系統。當完成任務后,在通過調用系統函數來關閉該文件。
下面我們看如何修改:
1、先查看系統默認值
注意紅線標注的“open files (-n) 1024”這行顯示文件句柄限制數量是1024,這個值對于實際生產環境的應用服務器來說太小了。我們需要修改文件句柄的大小。
2、修改系統默認文件句柄限制
#vi /etc/security/limits.conf
如果修改某個用戶的文件句柄限制數量,可以增加如下兩句:
你的用戶名 soft nofile 2048
你的用戶名 hard nofile 65536
如果將所有用戶的文件句柄限制統一修改,可以增加如下兩句:
* soft nofile 2048
* hard nofile 65536
注意wq保存退出。
我們添加的有soft, hard兩種限制:硬限制是實際的限制,而軟限制是warnning限制,只會做出warning。修改完保存重啟shell即可(有些系統可能需要重啟系統,SUSE LINUX是不用的),再用ulimit -a 查看一下設置發現已成功。
3、ulimit其實就是對用戶和單一程序的限制,我們再看一下系統總限制:
查看系統總限制命令:
#cat /proc/sys/fs/file-max
查看整個系統目前使用的文件句柄數量命令:
#cat /proc/sys/fs/file-nr
如果要修改file-max和file-nr的值,需要通過vi /etc/sysctl.conf進行編輯修改,使用sysctl -p使其生效。
對于一般的應用來說(Apache、系統進程)1024完全足夠使用,但是對于squid、mysql、java等單進程處理大量請求的應用來說就不夠用了。那么如何知道當前進程打開了多少個文件句柄呢?我們可以通過這個來查看:
#lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
左邊一列是打開的文件句柄數量,第二列是進程ID號。如果系統并發特別大,文件句柄數很有可能會超過1024,這時候我們就必須要調整系統參數,以適應實際應用的變化。
補充:
查看某個進程開了那些句柄:
#lsof -p pid
查看某個進程開了多少個句柄:
#lsof -p pid |wc -l
看某個文件/目錄被什么進程占用了,顯示已打開該目錄或文件的所有進程信息:
#lsof path/filename
上述內容就是如何進行SUSE LINUX系統文件句柄限制的修改,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。