apache worker 模块 线程连接数简单介绍

本文介绍了Apache Worker模块的线程配置,包括StartServers、MaxClients、MinSpareThreads、MaxSpareThreads和ThreadsPerChild等参数的含义和影响。通过调整这些参数,可以优化Apache服务器对并发请求的响应能力。例如,最大线程数受MaxClients限制,而ThreadsPerChild应与MaxClients保持整数倍关系,以确保在高并发场景下的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所使用httpd版本为:httpd2.2.8

配置安装:
./configure --prefix=/usr/local/apaache2/ --with-mpm=worker 

make  && make install

查看pmp   httpd -l 


修改配置文件   apache安装目录/conf/httpd.conf文件
  支持网页查看status

添加如下配置 
ExtendedStatus On
<Location /server-status>
SetHandler server-status

Order Deny,Allow
Deny from nothing
Allow from all
</Location>
并开启mpm配置、


修改worker moudle时的配置参数
位于apache安装目录/conf/extra/httpd-mpm.conf 文件
vi /usr/local/apaache2/conf/extra/httpd-mpm.conf

线程数 默认为50个
①  默认配置为:
<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
startServers :初始化时开启的进程
MinSpareThreads :最小的空闲线程
MaxSpareThreads:最大的空闲线程数
ThreadsPerChild: 每个进程下产生的线程数
查看
所以线程数为 2*25=50  
即1(requess currently )+ 49 (idle workers)

②修改  将startservers 改为3.

<IfModule mpm_worker_module>
    StartServers          3
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

此时线程数为 3*25=75

③ 将startservers 修改为4
<IfModule mpm_worker_module>
    StartServers          4
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
此时线程数还是75
原因:因为最大线程数限制为75个。虽然设定开始进程为4.但是当启动完3个进程时(3*25)已经达到最大线程数限定(75),所以第4个进程就起不来了

④startservers改为3,ThreadsPerChild为30
<IfModule mpm_worker_module>
    StartServers          3
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      30
    MaxRequestsPerChild   0
</IfModule>
此时的线程数为60,分析:当启动2个进程时,线程数为60(2*30),当启动第三个进程时线程数要为90(3*30)超过了最大线程数为75的限制所以第三个进程起不来。即为60.

如果此时用ab命令对其进行压力测试时,
/usr/local/apaache2/bin/ab -c 1000 -n 10000  http://192.168.1.65/
会发现最大能达到150个(74+76)如下图。

分析:当多用户连接的时候,Apache会根据连接数来开启进程,每个进程会启用各自启动线程。这时,有可能会超过MaxSpreThreads 线程的限制,
但是会受到MaxClients 的限制,即最多启动线程为150个。


另外,配置参数时 MaxClients最好与 ThreadsPerChild  的设置成整数倍,这样大用户并发访问时 能到达Maxclients的设置。
如下配置
<IfModule mpm_worker_module>
    StartServers          3
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      40
    MaxRequestsPerChild   0
</IfModule>
开始时是为40个线程

对其进行压力测试
/usr/local/apaache2/bin/ab -c 1000 -n 10000  http://192.168.1.65/
发现最大也只能到120个线程。

另外,这样设置的时候
apache会对你提醒的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值