Unix下檔案描述符與Squid

來源:互聯網
上載者:User

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

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

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

通常在你的Unix shell中能找到系統的檔案描述符限制。所有的C shell及其類似的shell有內建的limit命令。更新的Bourne shell及其類似的shell有一條叫做ulimit的命令。為了發現你的系統的檔案描述符限制,試運行如下命令:

csh% limit descriptors unlimited        csh% limit descriptors        descriptors    4096

或者

sh$ ulimit -n unlimitedsh$ ulimit -n4096

在Freebsd上,你能使用sysctl命令:

% sysctl -a | grep maxfileskern.maxfiles: 8192kern.maxfilesperproc: 4096

如果你不能確認檔案描述符限制,squid的./configure指令碼能替你做到。當你運行./configure時,請見3.4章節,觀察末尾這樣的輸出:

checking Maximum number of file descriptors we can open... 4096

假如其他的limit,ulimit,或者./configure報告這個值少於1024,你不得不在編譯squid之前,花費時間來增加這個限制值的大小。否則,squid在高負載時執行效能將很低。

增加檔案描述符限制的方法因系統不同而不同。下面的章節提供一些方法協助你開始。

3.3.1.1 Freebsd,NetBSD,OpenBSD

編輯你的核心設定檔,增加如下一行:

options       MAXFILES=8192

在OpenBSD上,使用option代替options。然後,configure,編譯,和安裝新核心。最後重啟系統以使核心生效。

3.3.1.2 Linux

在Linux上設定檔描述符有點複雜。在編譯squid之前,你必須編輯系統include檔案中的一個,然後執行一些shell命令。請首先編輯/usr/include/bits/types.h檔案,改變_ _FD_SETSIZE 的值:

#define _ _FD_SETSIZE    8192

下一步,使用這個命令增加核心檔案描述符的限制:

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

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

sh# ulimit -Hn 8192

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

3.3.1.3 Solaris

增加該行到你的/etc/system檔案:

set rlim_fd_max = 4096

然後,重啟機器以使改動生效。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.