檔案描述符 fd

2021-04-12 21:32:29 字數 1012 閱讀 1391

1、首先說什麼是檔案描述符,它有什麼作用?

檔案描述符是乙個簡單的整數,用以標明每乙個被程序所開啟的檔案和socket。第乙個開啟的檔案是0,第二個是1,依此類推。unix 作業系統通常給每個程序能開啟的檔案數量強加乙個限制。更甚的是,unix 通常有乙個系統級的限制。

因為squid 的工作方式,檔案描述符的限制可能會極大的影響效能。當squid 用完所有的檔案描述符後,它不能接收使用者新的連線。也就是說,用完檔案描述符導致拒絕服務。直到一部分當前請求完成,相應的檔案和socket 被關閉,squid 不能接收新請求。當squid發現檔案描述符短缺時,它會發布警告。

在執行./configure 之前,檢查你的系統的檔案描述符限制是否合適,能給你避免一些麻煩。大多數情況下,1024 個檔案描述符足夠了。非常忙的cache可能需要4096或更多。在配置檔案描述符限制時,我推薦設定系統級限制的數量為每個程序限制的2 倍。

2、怎麼突破,具體方法?

先檢視linux預設的檔案描述符:

# ulimit -n

1024

我們用命令

ulimit -hsn 65536

來增大檔案描述符,然後編譯安裝squid,

把ulimit -hsn 65536放到/etc/rc.d/rc.local讓啟動時載入。

以下為**:

linux

在linux 上配置

檔案描述符有點複雜。在編譯squid 之前,你必須

編輯核心

檔案描述符的限制:

# echo 8192 >; /proc/sys/fs/file-max

最後,增加程序檔案描述符的限制,在你即將編譯squid 的同乙個shell 裡執行:

sh# ulimit -hn 8192

該命令必須以root 執行,僅僅執行在bash shell。不必重啟機器。

使用這個技術,你必須在每一次系統啟動後執行上述echo 和ulimit 命令,或者至少在squid 啟動之前。假如你使用某個rc.d 指令碼來啟動squid,那是乙個放置這些命令的好地方。

Linux 檔案描述符fd 重定向

在學習檔案描述符之前,我們先來看一點其它相關的知識點。我們都知道,對乙個檔案我們可以進行開啟 讀 寫 關閉操作,在我們沒有接觸linux之前,將資訊輸出到顯示器上,我們通常能想到的方法有以下幾種 include include intmain c語言會預設幫我們開啟stdin stdout stde...

檔案描述符FD的含義 檔案控制代碼

使用sudo lsof np itcp stcp listen檢視占用埠的程式 因為 lsof 需要訪問核心記憶體和各種檔案,所以必須以 root 使用者的身份執行它才能夠充分地發揮其功能 檔案控制代碼是windows系統的概念,在linux下稱之為檔案描述符fd file description ...

檔案描述符fd和FILE的關係

1.file的內容 file在c中作為乙個結構體存在結構如下 struct iobuf 其中file的緩衝區指標用來緩衝資料,flag用來確定開啟檔案的許可權,file為檔案描述符,0為stdin,1為stdout,2為stderror,接下來為使用者檔案。2.檔案描述符fd 首先明白fd與file...