標籤:des blog http 使用 os strong 檔案 資料
1、什麼是檔案和檔案描述符
Linux中檔案可以分為4種:普通檔案、目錄檔案、連結檔案和裝置檔案。
1、普通檔案
是使用者日常使用最多的檔案,包括文字檔、shell指令碼、二進位的可執行和各種類型的資料。
ls -lh 來查看某個檔案的屬性,可以看到有類似 -rw-r--r-- ,值得注意的是第一個符號是 - ,這樣的檔案在Linux中就是普通檔案。這些檔案一般是用一些相關的應用程式建立,比像工具、文檔工具、歸檔工具... .... 或 cp工具等。這類檔案的刪除方式是用rm 命令;
2、目錄檔案
在linux中,目錄也是檔案,它們是包含檔案名稱和子目錄名以及指向那些檔案和子目錄的指標
當我們在某個目錄下執行,看到有類似 drwxr-xr-x ,這樣的檔案就是目錄,目錄在Linux是一個比較特殊的檔案。注意它的第一個字元是d。建立目錄的命令可以用 mkdir 命令,或cp命令,cp可以把一個目錄複寫為另一個目錄。刪除用rm 或rmdir命令。
3、連結檔案
連結檔案類似於Windows中的“捷徑”。
是通過ln -s 源檔案名稱 新檔案名稱 來建立的。
4、裝置檔案
包括兩種,塊裝置檔案,另一種是字元裝置檔案。字元裝置(無緩衝且只能順序存取)、塊裝置(有緩衝且可以隨機存取)。
塊裝置檔案是指資料的讀寫,它們是以塊為單位的裝置,如硬碟光碟機。
字元裝置主要是指序列埠的介面裝置,如網卡等。
核心(kernel)利用檔案描述符(file descriptor)來訪問檔案。檔案描述符是非負整數。開啟現存檔案或建立檔案時,核心會返回一個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。
習慣上,標準輸入(standard input)的檔案描述符是 0,標準輸出(standard output)是 1,標準錯誤(standard error)是 2。儘管這種習慣並非 Unix 核心的特性,但是因為一些 shell 和很多應用程式都使用這種習慣,因此,如果核心不遵循這種習慣的話,很多應用程式將不能使用。 檔案描述符的有效範圍是 0 到 OPEN_MAX。
在Windows作業系統上,檔案描述符被稱作檔案控制代碼。
2、檔案描述符對效能的影響
linux伺服器核心對檔案描述符的個數存在限制,預設在1024左右(視不同的伺服器類型,預設設定的值不太一樣),這對於不太繁忙的程式,一般是夠用的,但是如果是web伺服器或者效能測試用的加壓伺服器,這個限制是不夠用的,程式會開啟大量的檔案,導致檔案描述符不夠用,進而導致無法訪問新的檔案。
3、如何判斷檔案描述符設定存在問題
通過查看當先系統使用的檔案描述符,可以判斷檔案描述符個數是否受限
使用cat /proc/sys/fs/file-nr
[[email protected] bin]# cat /proc/sys/fs/file-nr
5664 0 186405
其中第一個數表示當前系統已指派使用的開啟檔案描述符數,第二個數為分配後已釋放的(目前已不再使用),第三個數等於file-max。
,大量並發請求時,當前系統已指派使用的開啟檔案描述符數會發生比較大的變化,預設的1024是不夠的。
4、如何修改linux伺服器核心的檔案描述符
(1)臨時修改,可以通過ulimit命令修改
//顯示當前檔案描述符
ulimit -n
//修改目前使用者環境下的檔案描述符為65536
ulimit -HSn 65536
使用ulimit命令的缺點:
1,只能修改當前登入使用者環境下的檔案描述符,如果此使用者來另外開啟一個串連,此連結環境的檔案描述符依然是沒改前的
2,如果系統重啟,以前修改都不再生效
(2)永久修改,通過修改nf檔案
編輯/etc/security/nf 檔案,在最後加入如下兩行
* soft nofile 65536
* hard nofile 65536
儲存退出,都不需要重啟伺服器,直接重新登陸用ulimit -n就能看到效果
這樣無論使用哪個使用者,無論是否重啟都不會失效了。