在freebsd5.2.1上线程还是多少有点问题。因此这次是在sun E450上进行安装测试:
编译安装:
./configure --prefix=/usr/local/apache-2.0.50 --with-mpm=worker --enable-include && make && make install
配置:(其他配置根据实际情况自行配置,这里只说如何更好的调好worker这个MPM)
默认的worker配置是:
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
单个控制进程负责子进程的建立。每个子进程可以建立由ThreadsPerChild指定的固定数量的线程。 然后,由独立的线程监听并处理到来的连接。
Apache总是试图维持一个备用的或者说空闲的服务线程池。这样,客户端无须等待线程或进程的建立即可得到处理。 最初建立进程的数量由StartServers指令所决定。 其后,Apache检测所有进程中空闲线程的总数,并新建或结束进程使总数维持在MinSpareThreads和MaxSpareThreads所指定的范围以内。 同时可以得到处理的客户端的最大数量取决于MaxClients指令,而进程建立的最大数量取决于ServerLimit指令。ServerLimit乘以ThreadsPerChild必须大于等于MaxClients
。
下面说说一个每秒并发量在3000-4000左右的网站的设置:
StartServers 10
ServerLimit 128
ThreadLimit 1024
MaxClients 4096
MinSpareThreads 32
MaxSpareThreads 64
ThreadsPerChild 32
MaxRequestsPerChild 0
ServerLimit乘以ThreadsPerChild正好等于MaxClients,这是允许的!这是一个经过仔细推敲的数值。比较能经受的起考验。
问题:
我编译安装都没有遇到问题,但是在实际运用中发觉真正的连接数很少,一般不超过100个,而所有的连接数却超过了6000,这个比值我个人认为很有问题,但是从实际访问效果来看,速度又是非常理想的。暂时还没有想到原因。