Apache最大连接数性能测试
By admin
- One minute read - 98 wordsApache最大连接数性能测试。
这天工作没什么事情,翻开看资料,再次学习一下apache的性能优化,以下就说说我的设置及测试。
先说一下我的测试机硬件及软件配置环境:
硬件:一台比较古老的机器,cpu: P42.0 ,内存256,其他的就不多说了。
软件:linux as 4 , apache2.0.59。
先说一下这次安装及配置就是测试apache的性能,如果你打算看其他方面的,那就不要看了,因为偶也没有写,嘿嘿嘿……
./configure –prefix=/usr/local/apache2 –with-mpm=worker –enable-so
说明:
MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool}
我这里mpm使用的是worker,以下说明一下mpm个参数;
MPM的引入是Apache 2.x最重要的变化,影响apache2.x 性能的最核心特性,
MPM(Multi -Processing Modules,多道处理模块),运行在一种多进程与多线程相混合的模式下,增强部分配置的可扩充性能。相比于Apache 1.3, 2.x版本本做了大量的优化来提升处理能力和可伸缩性,并且大多数改进在默认状态下即可生效。但是在编译和运行时刻,2.x也有许多可以显著提高性能的选择。
Beos、mpmt_os2分别是BeOS和OS/2上缺省的MPM。
perchild主要设计目的是以不同的用户和组的身份来运行不同的子进程。这在运行多个需要CGI的虚拟主机时特别有用,会比1.3版本中的SuExec 机制做得更好。
leader和threadpool都是基于worker的变体。
prefork就是Unix平台上缺省的MPM。它所采用的预派生子进程方式也是 Apache 1.3中采用的模式。prefork本身并没有使用到线程,2.x版本使用它是为了与1.3版本保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。若使用prefork,在make编译和make install安装后,使用“httpd -l”来确定当前使用的MPM,应该会看到prefork.c查看缺省生成的httpd.conf配置文件,里面包含如下配置段:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild 线程数,各个线程独立地处理请求。同样,为了不在请求到来时再临时生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。
MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。
ThreadsPerChild是worker MPM中与性能相关最密切的指令。ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用 ThreadLimit指令,它的最大缺省值是20000。上述两个值位于源码树server/mpm/worker/worker.c中的以下两行:
#define DEFAULT_THREAD_LIMIT 64
#define MAX_THREAD_LIMIT 20000
这两行对应着ThreadsPerChild和ThreadLimit的限制数。最好在configure之前就把64改成所希望的值。注意,不要把这两个值设得太高而超过系统的处理能力,从而导致因Apache不起动而使系统不稳定。
Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,主控进程会派生新的子进程。默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是20000)。这两个值位于源码树server/mpm/worker/worker.c中的以下两行:
#define DEFAULT_SERVER_LIMIT 16
#define MAX_SERVER_LIMIT 20000
以上内容我也是从我以前文档里cp的,也许有点过时,对于初次学习还是有帮助的。HOHOHO
好了,以下是我的机器实际配置过程。
我使用的MPM是worker,我要通过修改源代码文件,尽量增大进程数和线程数,
修改文件为;/root/httpd-2.0.59/server/mpm/worker/worker.c
修改内容:
#define DEFAULT_SERVER_LIMIT 50
#define DEFAULT_THREAD_LIMIT 100
然后开始编译,安装咯……
安装完成后,我将配置文件中worker 修改为以下;
StartServers 10
MaxClients 900
ServerLimit 50
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 90
ThreadLimit 100
MaxRequestsPerChild 0
具体参数说明,以上文档有。这里就不说了。