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

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

我最近了解到,要增加我们可以通过 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 增加到几乎任意数字。

附言:或者我为什么要关心这个?有没有办法可以设置我的系统,使它能够按照我的记忆允许的方式运行?

这是教程(官方 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. 下载并重建软件包:

    $ 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`
    

答案1

如果你的 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 年,我的建议是出于多种原因而购买另一台机器,性能是其中之一,易于维护是另一个原因,将所有鸡蛋放在一个篮子里是另一个原因,等等。

相关内容