如何配置apache最大的并发数

如何配置apache最大的并发数,第1张

1.首先确认apache的mpm方式 cmd>httpd.exe -l 可以看到是什么模式了 这里就看mpm_xxx.c这个xxx就是那个了2.修改httpd.conf文件 搜索mpm,找到 Server-pool management(MPM specific) 去掉# Include conf/extra/httpd-mpm.conf3.修改conf/extra/httpd-mpm.conf文件 prefork模式就修改这里 <IfModule mpm_prefork_module>StartServers 5 # 预先开启的进程 MinSpareServers 5 # 最小预留5个 MaxSpareServers 10 # 最大留10 MaxClients 150 # 最多并发多少个 * MaxRequestsPerChild 0 # 最多请求多少次 0不限制 </IfModule>winnt模式 <IfModule mpm_winnt_module>ThreadsPerChild 150 # 最大并发数 * MaxRequestsPerChild 0 # 最多处理多少次请求 0不限制 </IfModule>修改后面有*的那个字段的数值然后重新启动apache说明:配置到多大,不一定就可能支撑这么大的并发,考虑到本身apache所在的机器硬件性能(如:内存,CPU,硬盘IO) 系统是linux/unix,配置perfork <IfModule mpm_prefork_module>StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 *#并发量 MaxRequestsPerChild 0 </IfModule>给大家一个合理的建议配置,对大部份网站,中型网站配置 <IfModule mpm_prefork_module>StartServers 5 # 预先启动 MinSpareServers 5 MaxSpareServers 10 # 最大空闲进程 ServerLimit 1500 *# 用于修改apache编程参数 MaxClients 1000 *# 最大并发数 MaxRequestsPerChild 0 </IfModule>注:apache2.2以后才有的ServerLimit这个参数,其中ServerLimit数值大于MaxClients数值如果网站的pv值 百万 ServerLimit 2500 *# 用于修改apache编程参数 MaxClients 2000 *# 最大并发数 注:调到这就是极限了,要是网站访问还是大,哪就要增加apache服务器了

背景:

Apache做分发+静态页面分发,weblogic做应用服务器,linux环境。

最近客户反映新增一批客户端后,经常不能打开应用页面,通过Apache性能监控页面查看发现,当前的客户端连接数已达到Apache所允许的客户端连接数最大值,于是开始按照此方向解决问题。下面就介绍下如何调整Apache的并发连接数,以及如何配置Apache的性能监控页面,使我们平时能更方便的监控Apache的运行状态

一、打开Apache的性能监控功能

可能大多数维护人员在维护管理Apache的时候,是使用ps aux|grep httpd|wc -l来查看当前Apache有多少个进程,但是这个命令无法告知我们这些进程是处于工作状态,还是等待状态,当前有多少连接,还剩余多少空闲连接资源等信息。

对Apache Server Status的启用

对Apache的状态管理的模块是LoadModule status_module modules/mod_status.so,所以这个需要有

可以通过apachectl -l 来查看apache已包含的模块

修改conf/httpd.conf

ExtendedStatus On

<Location /server-status>

SetHandler server-status

Order Deny,Allow

#Deny from all

Allow from all

</Location>

访问:

http://localhost/server-status?auto&refresh=Y成功。

解释:

http://localhost/server-status?auto&refresh=Y将表示访问状态页面可以每N秒自动刷新一次;

Deny from表示禁止的访问地址;

Allow from表示允许的地址访问;

调用接口

http:// your.server.name/server-status,将会生产详细的状态报表,可以在浏览器中直接浏览。

另外可以加下面两种参数:

?refresh=N:设置多久自动刷新一次

?auto:生产机器可以读状态

server-status的输出中每个字段所代表的意义如下:

字段 说明

Server Version Apache服务器的版本。

Server Built Apache服务器编译安装的时间。

Current Time 目前的系统时间。

Restart Time Apache重新启动的时间。

Parent Server Generation Apache父程序(parent process)的世代编号,就是httpd接收到SIGHUP而重新启动的次数。

Server uptime Apache启动后到现在经过的时间。

Total accesses 到目前为此Apache接收的联机数量及传输的数据量。

CPU Usage 目前CPU的使用情形。

_SWSS.... 所有Apache process目前的状态。每一个字符表示一个程序,最多可以显示256个程序的状态。

Scoreboard Key 上述状态的说明。以下为每一个字符符号所表示的意义:

* _:等待连结中。

* S:启动中。

* R:正在读取要求。

* W:正在送出回应。

* K:处于保持联机的状态。

* D:正在查找DNS。

* C:正在关闭连结。

* L:正在写入记录文件。

* G:进入正常结束程序中。

* I:处理闲置。

* .:尚无此程序。

Srv 本程序与其父程序的世代编号。

PID 本程序的process id。

Acc 分别表示本次联机、本程序所处理的存取次数。

M 该程序目前的状态。

CPU 该程序所耗用的CPU资源。

SS 距离上次处理要求的时间。

Req 最后一次处理要求所耗费的时间,以千分之一秒为单位。

Conn 本次联机所传送的数据量。

Child 由该子程序所传送的数据量。

Slot 由该Slot所传送的数据量。

Client 客户端的地址。

VHost 属于哪一个虚拟主机或本主机的IP。

Request 联机所提出的要求信息。

在Cacti中进行监控

下载模板和脚本

http://forums.cacti.net/about25227.html&highlight=apachestats

在上面的地址下载一个叫ApacheStats08.zip的,中间有二个文件,一个处理脚本php的,另一个是xml的文件.

1.其中的ss_apache_stats.php是脚本文件,它是一个php的文件,放到你的cacti/scripts/下面.

2.接下来在cacti界面导入cacti_host_template_webserver_-_apache.xml这个文件

3.你就可以在cacti中加入这些设置.就不细写了,如下

被监测的apache服务器需要向上面一样,打开mod_status功能,记的设置好权限访问,不然任何人都可以见到可不好哦3、访问http://IP:port/server-status监控页面

好了,你应该会看到这样的一大段信息:

K_KWKK_K__KKKCKK___KK____KK_KKKK_KKKK__KK_KKK_KKK__K_K_KKKKKKKC_

K__KKK_KKKKKK_KKKKKK_KKKCKKKKKKKKK_KK__KKKKKKK_KKKK_KKC__K__K__K

_KKKK_KCK_CK_K_K_K_KK__KKKKK_KKKKKKKKKK_KKKK_K_CKKK_K__KK_KKK__K

___KKKK.........................................................

................................................................

关于这些字符的含义,监控页面下是有说明的:

"_" Waiting for Connection, "S" Starting up, "R" Reading Request,

"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,

"C" Closing connection, "L" Logging, "G" Gracefully finishing,

"I" Idle cleanup of worker, "." Open slot with no current process

“K”表示已连接的并且正在“忙碌”的进程,“.”表示空闲的连接点,如果你打开后发现全是K,那么恭喜你,你需要调整下Apache的并发连接数了,下面的内容将对你很有帮助。

二、调整Apache的并发连接数

1、进入到$ApacheHome/conf/extra,打开httpd-mpm.conf文件

找到<IfModule mpm_prefork_module>配置

在第一行添加:

ServerLimit 5000

修改MaxClients值为1500

2、进入到$ApacheHome/conf,打开httpd.conf文件

去掉Include conf/extra/httpd-mpm.conf前的注释符

保存后退出。然后重启Apache,再打开之前的监控页面,是不是发现多了很多的“.....”?好吧,这就说明你的系统还有很多空闲的连接资源可以用。

可以使用以下参数配置Apache的并发连接数:

<IfModule prefork.c>

StartServers8

MinSpareServers 5

MaxSpareServers20

MaxClients150

MaxRequestsPerChild 1000

</IfModule>

<IfModule worker.c>

StartServers2

MaxClients150

MinSpareThreads25

MaxSpareThreads75

ThreadsPerChild25

MaxRequestsPerChild 0

</IfModule>

<IfModule mpm_winnt.c>

ThreadsPerChild 250

MaxRequestsPerChild 0

</IfModule>

对于Windows系统,缺省会使用mpm_winnt,配置中有用的是第三段,即:

<IfModule mpm_winnt.c>

ThreadsPerChild 250

MaxRequestsPerChild 0

</IfModule>

具体含义可参考Apache的官方文档:

http://httpd.apache.org/docs/2.2/mod/mpm_common.html#threadsperchild


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11510905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存