Linux

/etc/sysctl.conf 上的文件描述符設置

  • February 22, 2015

我最近了解到,能夠增加我們可以通過 Apache 服務的虛擬主機的數量取決於文件​​描述符。

他們說應該將值添加到 /etc/sysctl.conf 作為

fs.file-max = 65536

我擁有的 RAM 數量與上述數字之間有什麼關係?

你能告訴我嗎?

“您應該擁有 X GB RAM 和 Y GHz CPU 才能將 fs.file-max 設置為 Z”

我基本上想知道 X - Y - Z 關係以便能夠進行設置。

伺服器是 Ubuntu 8.04,我可以通過我的雲伺服器提供商將 RAM 或 CPU 增加到幾乎任意數量。

ps:或者我為什麼要關心這個?有沒有一種方法可以設置我的系統,讓它作為我的記憶允許它服務?

這是教程(官方 plesk 文件)


  1. 將以下行添加到 /etc/sysctl.conf:
$ fs.file-max = 65536
  1. 執行以下外殼命令:
$ /sbin/sysctl -w fs.file-max=65536

請注意,fs.file-max 的值最多可以等於 220=1048576)。 3. 將以下行添加到 /etc/init.d/apache2 和 /usr/sbin/apache2ctl 的開頭:

$ ulimit -n `cat /proc/sys/fs/file-max`
  1. 更改 /usr/include/bits/typesizes.h 和 /usr/include/nptl/bits/typesizes.h 文件中的 __FD_SETSIZE 值。它應該是這樣的:
$ define __FD_SETSIZE 65536
  1. 下載和重建包:
$ apt-get install apt-src
$ apt-src --build install openssl
$ dpkg -i libssl*.deb openssl*.deb
$ apt-src --build install apache2
$ dpkg -i libapr*.deb apache2_*.deb apache2-common*.deb apache2-mpm-prefork*.deb apache2-utils*.deb
$ cp /opt/psa/suexec/psa-suexec2 /usr/lib/apache2/suexec2
/etc/init.d/apache2 restart
$ apt-src --build install libc-client2002edebian
$ dpkg -i libc-client-dev_2002edebian1-*.deb libc-client2002edebian*.deb
mlock*.deb
$ apt-src --build install php4
$ dpkg -i `ls *deb|grep php4|grep -v apache-mod`

如果您安裝的 Ubuntu 預設情況下沒有超過 65536 個可用,我會感到驚訝。檢查您目前的設置

$ sudo sysctl fs.file-max

一般的經驗法則是,您可以fs.file-max為每 1MB 的 RAM 增加 64 個參數。

e.g. 2 gigabytes = 2048 * 1MB
                = 2048 * 64
                = 131072

那是 65536 的兩倍。如果您實際上不需要使用它,我會猶豫使用它,因為在某些情況下它可能會降低您的性能。與 sysctl 設置同樣重要的是 __FD_SETSIZE,因為這是您的應用程序在使用系統select(2)呼叫時所使用的。

不過,我的總體建議是,在 Apcahe 的一個實例上 > 1000 個虛擬主機對於在一台機器上管理來說簡直是一場噩夢。一台受損的主機,任何停機時間等,您就會有更多的網站對您大喊大叫。

我在網路託管行業工作了 7 年多,我的建議是出於多種原因購買另一台機器,性能是其中之一,易於維護是另一個原因,一個籃子裡的所有雞蛋都是另一個,等等。

引用自:https://serverfault.com/questions/92723