我最近了解到,要增加我们可以通过 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 文档)
在 /etc/sysctl.conf 中添加以下行:
$ fs.file-max = 65536
运行以下 shell 命令:
$ /sbin/sysctl -w fs.file-max=65536
请注意,fs.file-max 的值最大可等于 220=1048576)。
在 /etc/init.d/apache2 和 /usr/sbin/apache2ctl 的开头添加以下行:
$ ulimit -n `cat /proc/sys/fs/file-max`
更改 /usr/include/bits/typesizes.h 和 /usr/include/nptl/bits/typesizes.h 文件中的 __FD_SETSIZE 值。它应该是这样的:
$ define __FD_SETSIZE 65536
下载并重建软件包:
$ 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 年,我的建议是出于多种原因而购买另一台机器,性能是其中之一,易于维护是另一个原因,将所有鸡蛋放在一个篮子里是另一个原因,等等。