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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)