在/etc/sysctl.conf上设置文件描述符

我最近了解到,能够增加通过Apache提供的虚拟主机的数量取决于文件描述符。

他们说这个值应该被添加到/etc/sysctl.conf中

fs.file-max = 65536 

内存数量与上面的数字有什么关系?

你能告诉我吗?

“你应该有X GB RAM和Y GHz的CPU能够将fs.file-max设置为Z”

我基本上想知道X-Y-Z关系能够做出设置。

服务器是一个Ubuntu 8.04,我可以通过我的云服务器提供商增加内存或CPU几乎任何数量。

ps:或者我为什么要关心这个? 有没有一种方法可以build立我的系统,它将作为我的记忆允许它服务?

这是教程(官方plesk文档)


  1. 将以下行添加到/etc/sysctl.conf中:

     $ fs.file-max = 65536 
  2. 运行以下shell命令:

     $ /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` 
  4. 更改/usr/include/bits/typesizes.h和/usr/include/nptl/bits/typesizes.h文件中的__FD_SETSIZE值。 它应该是这样的:

     $ define __FD_SETSIZE 65536 
  5. 下载并重build软件包:

     $ 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 

一般的经验法则是,对于每1MB的RAM,可以将fs.file-max参数增加64。

 eg 2 gigabytes = 2048 * 1MB = 2048 * 64 = 131072 

这是65536的两倍。如果你真的不需要使用它,我会犹豫,因为在某些情况下,它会降低你的performance。 与sysctl设置同样重要的是__FD_SETSIZE,因为这是您的应用程序在使用system select(2)调用时所使用的。

一般来说,我的build议是,在Apcahe的一个实例上,有1000个虚拟主机在一台机器上pipe理是一个噩梦。 一个妥协的主机,任何停机时间等,你有更多的网站尖叫着你。

我在networking主机工作了7年多,而我的build议就是为了另一台机器出于多种原因而停下工作,性能就是其中之一,易于维护,另一个篮子里的所有鸡蛋都是另一台机器等等。