一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

怎么优化设置apache的并发数量?

时间:2022-06-30 18:03:48 编辑:袖梨 来源:一聚教程网

1、在httpd.conf文件中修改

 代码如下 复制代码
#Server-pool management (MPM specific)
#Include conf/extra/httpd-mpm.conf


将上面一句的#注释去掉

2、确定当前的apache是什么MPM模式(winnt模式,perfork模式,worker模式)

1.对于perfork.c模块

其特点是每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块。
既然是一个进程一个线程,所以在prefork.c下,这两个值是相等的。注:ServerLimit最大值为2000.

2.对于work.c模块来说

是多线程的,默认是一个进程有25个线程,因此如果设置ServerLimit为100,那么MaxClients最大可以设置为2500。
这里说说我们可怜的vps,为了省钱一般只有512m-1g的内存,而prefork.c一个进程占用30-45m左右的内存(这个值跟php-fpm下php-cgi内存占用相当),所以如果有512m的内存话,系统+mysql(最小节约配置)吃掉250m左右,剩下的内存也就是跑10个进程,所以这个值真的是很可怜,不过对于流量小的站点,这个并发也够用了,一般跑个上千的流量不是问题。所以做web服务,有钱还是多弄点内存的好,或者跑lnmp是比较合适的选择。
进入到apache/bin目录
cmd命令:httpd.exe -1
说明:看mpm_xxx.c 如果xxx是winnt  说明是winnt,另外还可能是perfork或者worker
3、修改httpd-mpm.conf文件

 代码如下 复制代码
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum  number of requests a server process serves

ThreadsPerChild      150  //修改这个值即可
MaxRequestsPerChild    0
4、重启apache,测试看看
在Linux下,一般采用的MPM是perfork模式
 代码如下 复制代码

StartServers          5        //预先起5个进程
MinSpareServers       5       //最小空闲进程
MaxSpareServers      10      //最大空闲进程
MaxClients          150      //并发连接数
MaxRequestsPerChild   0      //指一个进程里可以起多少个线程,对worker更好,0为不限制
给大家一个合理的建议配置,对在部分网站,中型网站,配置:
 代码如下 复制代码

StartServers          5        //预先起5个进程
MinSpareServers       5       //最小空闲进程
MaxSpareServers      10      //最大空闲进程
ServerLimit          1500     // 用于修改apache编程参数
MaxClients          1000      //并发连接数
MaxRequestsPerChild   0      //指一个进程里可以起多少个线程,对worker更好,0为不限制

如果你的网站pv值百万,可以这样设置:
 代码如下 复制代码
ServerLimit          2500     // 用于修改apache编程参数
MaxClients          2000      //并发连接数

/*******注释********/
StartServers
指定服务器启动时建立的子进程数量,prefork默认为5。
MinSpareServers
指定空闲子进程的最小数量,默认为5。如果当前空闲子进程数少于MinSpareServers ,
那么Apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。
MaxSpareServers
设置空闲子进程的最大数量,默认为10。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。
此参数不要设的 太大。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成”MinSpareServers+1″。
MaxClients
限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,
队列中的请求将得到服务。要增大这个值,你必须同时增大ServerLimit。
MaxRequestsPerChild
每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。
如果 MaxRequestsPerChild为”0″,子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:
1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
补充:Apache压力测试 ab工具的使用方法
打开运行输入cmd进入到DOS命令行界面,cd 进入到Apache/bin 目录,输入命令:
ab.exe –n 10000 –c 100 localhost/index.php
上面一行命令的意思是访问index.php这个页面10000次,每次的并发访问为100。执行命令之后耐心等待一段时间后就会出来类似下面的结果,图片面都有详细说明测试返回来的结果是什么意思
参数 –c concurrency 表示执行的总次数,如 –c 10000表示总共执行10000次,
参数 –n requests 表示同时连接数

怎么优化设置apache的并发数量?

热门栏目