如何监控Apache性能及调整Apache的并发连接数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何监控Apache性能及调整Apache的并发连接数相关的知识,希望对你有一定的参考价值。

参考技术A 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>
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 联机所提出的要求信息。
转载,仅供参考。

PHP使用Apache中的ab测试网站的压力性能及mpm介绍

打开Apache安装的bin目录

shift+鼠标右键

复制粘贴以下代码->回车

ab -n 1000 -c 100 http://localhost/test.php

上例表示总共访问http://localhost/test.php这个脚本1000次,100并发(模拟100个用户同时访问)。

Server Software:        Apache/2.4.4                                   #apache版本号  
Server Hostname:        localhost  
Server Port:            80  
   
Document Path:          /test/index.php                       
Document Length:        5 bytes  
   
ConcurrencyLevel:      100  
Time taken fortests:   54.111 seconds                                 #访问的总时间(秒)  
Completerequests:      10000                                          #访问的总次数  
Failed requests:        0  
Write errors:           0  
Totaltransferred:      2060000 bytes  
HTMLtransferred:       50000 bytes  
Requests persecond:    184.80 [#/sec] (mean)                          #每秒访问多少次  
Time perrequest:       541.111 [ms] (mean)                            #这么多人(100)访问一次的时间  
Time perrequest:       5.411 [ms] (mean, acrossall concurrent requests)         #一个人访问一次花费的时间  
Transfer rate:          37.18 [Kbytes/sec] received  
ab常用参数的介绍:
  -n :总共的请求执行数,缺省是1;

  -c: 并发数,缺省是1;

  -t:测试所进行的总时间,秒为单位,缺省50000s

  -p:POST时的数据文件

  -w: 以HTML表的格式输出结果

mpm介绍

mpm是apache自带的,可以用它来测试网站的并发量有多大和某个页面的访问时间。Mpm为多路处理模块,即apache采用怎么样的方式来处理并发,主要有三种方式

1、  perfork 预处理进程方式(用进程服务)

2、  worker 工作模式(用进程下的线程服务)

3、  winnt这个一般是windos 下采用的。(针对windows)

修改Apache默认并发配置

1、  确定当前 apache是mpm模式,CMD下进放到apache的bin目录输入指令httpd –l 会出现以下结果,就可知道它用的是什么模式

Compiledin modules:  
  core.c  
  mod_win32.c  
  mpm_winnt.c 这是为winnt模式  
  http_core.c  
  mod_so.c  

2、修改httpd-mpm.conf文件,因为从上面可以看到,我的apache用的是winnt模式,所以在该文件下找到对应的winnt_module模块,修改参数,原先为150,我们把它修改成1000

<IfModulempm_winnt_module>  
    ThreadsPerChild        1000  
    MaxConnectionsPerChild   0  
</IfModule> 

同理,如果是其它模式,则在httpd-mpm.conf中修改对应的地方即可。如下

<IfModule mpm_prefork_module>  
   StartServers             5                  #开始启动的进程  
   MinSpareServers          5                 #最小准备进程  
   MaxSpareServers         10                #最大空闲进程  
   MaxRequestWorkers      1000            #最大并发数  
   MaxConnectionsPerChild   0  
</IfModule>  

3、重启Apache服务器

参考资料:

http://blog.csdn.net/zhangzmb/article/details/51884011

http://blog.csdn.net/aoyoo111/article/details/30734527

 

以上是关于如何监控Apache性能及调整Apache的并发连接数的主要内容,如果未能解决你的问题,请参考以下文章

性能测试—Tomcat服务器监控

Apache优化

教你如何监控 Apache性能

高性能apache服务器配置大并发教程MPM模块配置

超详细的Tomcat性能监控及调优教程

PHP使用Apache中的ab测试网站的压力性能及mpm介绍