最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎么优化设置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 |
在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 表示同时连接数
相关文章
- 世界之外茶馆轶闻怎么玩 世界之外茶馆轶闻活动介绍 11-27
- 群英风华录兑换码分享 群英风华录兑换码大全2024 11-27
- 原神5.2地方传奇莉莱怎么打 原神5.2版本莉莱打法机制介绍 11-27
- 桃源深处有人家故宫地图萝卜在哪里 桃源故宫地图全萝卜位置攻略 11-27
- 桃源深处有人家故宫地图挖宝在哪里 桃源故宫地图全挖宝位置攻略 11-27
- 光遇11.28复刻先祖是谁 11-27