如何监控Apache性能及调整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_statusso,所以这个需要有
可以通过apachectl -l 来查看apache已包含的模块
修改conf/httpdconf
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order Deny,Allow
#Deny from all
Allow from all
</Location>
Deny from表示禁止的访问地址;
Allow from表示允许的地址访问;
调用接口
http:// yourservername/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 联机所提出的要求信息。
转载,仅供参考。
服务器监控软件和工具可以帮助我们从任何一个地方实时了解服务器的性能和功能。由于复杂的社交网络系统以及我们对于互联网的高度依赖,我们绝不允许那些宝贵的客户因自身系统停运而流失。选用实用的服务器工具和软件是一个明智的决定,能够同时为你带来短期效益和长期效益。下面是10款超实用的服务器监控工具和软件:
1 Simple Server Monitor
Simple Server Monitor是一款成本合理、功能强大、使用方便的服务器监控工具,它会不断监控服务器和Web应用程序的运行状况。
2 Pingdom
Pingdom服务可以监控互联网上多个地方的网站和服务器,确保它们运行正常。你可以使用Pingdom来监控你的公共网站和受密码保护的网站、FTP服务器、电子邮件服务器,以及可以通过互联网来访问的其他各种服务。
3 迈克菲SECURE技术
迈克菲技术可以帮助你应对网上风险。无论你向迈克菲求助是为了扫描安全漏洞、PCI认证还是验证信任标记,它都可以提供简单、有效、成本合理的安全解决方案。
4 interSeptor Pro
interSeptor Pro是一款高级的以太网数据中心和机架监控系统,它可以监控机房和机架的环境状况;而且一旦出现空调系统故障以及可能危及业务连续性的其他情况,就会发出预警警报。
5 AppFirst
AppFirst适用于用任何一门语言编写的每一个应用程序。有了AppFirst,你根本不需要自己的用户告诉你哪里又出了问题。你可以下载这款服务器监控软件的免费试用版。
6 PA Server Monitor
如果在IT部门工作,要处理好工作与生活的关系有些难度。但是PA Server Monitor可以帮助IT人员减轻压力,因为它可以不断监控服务器,同时又不妨碍你处理其他工作。
7 Uptime software
该软件具有虚拟服务器监控、物理服务器监控和云环境监控等功能。这一款服务器监控工具适用于多种平台。可以监控服务、监控应用程序、监控系统资源用量,又没有“企业级”监控工具的那种复杂性。
8 Nimsoft
可以通过监控获得所需的详细信息,以便优化贵企业中重要服务器的性能和可用性。面向服务器的Nimsoft监控解决方案(NMS)支持Windows、iSeries AS400、Netware、Linux和UNIX等操作系统——这一切均借助易于使用的控制台即可实现。NMS可以监控服务器的核心资源(处理器、内存、磁盘、事件日志和计数器等),能够集中管理远程进程和服务(如自动和手动的开始/重启/终止)。你可以下载这款服务器监控工具的免费试用版。
9 Neustar Webmetrics
Webmetrics监控服务让公司企业能够在客户受到影响之前,跟踪、查明、解决和防止Web性能问题。Webmetrics可以测试、监控和测量网站、Web应用程序、Web服务、网络服务和流媒体的性能,从而确保不间断的正常运行时间和性能完整性。
10 Dotcom-Monitor
Dotcom-Monitor是一项高级的网站监控服务,它把监控、报告、通知、上报和分析等功能结合起来,做成最适合贵公司需要的套件,以确保贵公司电子商务的性能和正常运行时间。
公司使用的服务器是linux的操作系统,之前很长一段时间监控系统参数都是使用top等linux命令来监控
这样做的好处
1可以非常容易的监控的系统的状态
2实时性非常强
不足之处
1不能和loadrunner其他的图表进行合并,造成了很难在事后分析出系统的问题
2监控系统的数据无法直接保存,供下次参考使用
最近终于说服了公司的sa,让我能在性能测试环境做必要的设置,因为之前sa一直认为我要做的事情会对系统的安全性造成影响。
现在我来介绍一下如何在linux设置来完成loadrunner对服务器性能的监控
A验证服务器上是否配置了rstatd守护程序
1 rup 127001
2find / -name rpcrstatd
3/usr/sbin/rpcinfo -p
B下载rpcrstatd
http://sourceforgenet/projects/rstatd
C打开端口映射
1执行 setup命令
这时会弹出一个类似图形化的界面,光标移动到System services,回车。在新界面中找到portmap项,空格选中。然后选择OK,再选择quit。
2/etc/rcd/initd/portmap start //启动portmap
D编译安装rstatd
/configure
make all-am
make install-am
E起rstatd服务
/usr/local/sbin/rpcrstatd
F安装xinetd服务
yum install xinetdi386
/sbin/service xinetd restart
好了,liunx中的设置基本上都已经设置完了,接下来只要到loadrunner中加上对相应服务的监控就可以了
我们以Windows服务器、Linux服务器和IBM AIX服务器为例,分别说明如下:
Windows监控功能:
1、管理Windows的可用性和性能
2、监控性能统计数据,如CPU利用率、内存利用率、磁盘利用率和应答时间
3、监控Windows系统中运行的进程
4、如果Windows系统或该系统中任何指定的属性出现问题,将基于所配置的阈值生成通知和告警;基于配置自动执行操作
5、能即刻呈现性能图表和报表;并基于可用性、健康状况和连接时间分别显示报表
6、提供历史的和当前的Windows性能指标,以便了解特定时间段内的性能状态
7、监控整体的CPU利用情况,并显示哪些进程正在消耗多少CPU资源
8、监控内存使用情况并检测内存消耗大户
Linux监控功能:
1、管理Linux的可用性和性能
2、监控性能统计数据,如CPU利用率、内存利用率、磁盘利用率和应答时间
3、监控Linux系统中运行的进程
4、如果Linux系统或该系统中任何指定的属性出现问题,将基于所配置的阈值生成通知和告警;并基于配置自动执行操作
5、能即刻呈现性能图表和报表;并基于可用性、健康状况和连接时间分组和显示报表
6、提供历史的和当前的Linux性能指标,以便了解特定时间段内的性能状态
7、监控整体的CPU利用情况,并显示哪些进程正在占用多少CPU资源
8、监控内存使用情况并检测内存消耗大户
IBM AIX监控能力:
1、管理IBM AIX可用性和性能
2、监控诸如CPU利用率、内存利用率、磁盘利用率和应答时间等性能统计数据
3、监控模式包括Telnet和SSH
4、监控AIX系统上运行的进程
5、如果AIX系统或该系统中任何指定的属性出现问题,将基于所配置的阈值生成通知和告警;并基于配置自动执行操作
6、能即刻呈现性能图表和报表;并基于可用性、健康状况和连接时间分组和显示报表
7、提供历史的和当前的AIX性能指标,以便了解特定时间段内的性能状态
8、监控整体的CPU利用情况,并显示哪些进程正在占用多少CPU资源
9、监控内存使用情况并检测内存消耗大户
1查看系统负载
(1)uptime
这个命令可以快速查看机器的负载情况。
在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。
命令的输出,load average表示1分钟、5分钟、15分钟的平均负载情况。
通过这三个数据,可以了解服务器负载是在趋于紧张还是趋于缓解。
如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。
反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。
(2)W
Show who is logged on and what they are doing
可查询登录当前系统的用户信息,以及这些用户目前正在做什么操作
其中的load average后面的三个数字则显示了系统最近1分钟、5分钟、15分钟的系统平均负载情况
注意:
load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数。
如果输出中系统有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能,
但是偶尔大于4时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲
2dmesg | tail
该命令会输出系统日志的最后10行。
这些日志可以帮助排查性能问题
3vmstat
vmstat Virtual Meomory Statistics(虚拟内存统计),用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况。
后面跟的参数1,表示每秒输出一次统计信息,表头提示了每一列的含义
(1)监控进程procs:
r:等待在CPU资源的进程数。
这个数据比平均负载更加能够体现CPU负载情况,数据中不包含等待IO的进程。如果这个数值大于机器CPU核数,那么机器的CPU资源已经饱和(出现了CPU瓶颈)。
b:在等待io的进程数 。
(2)监控内存memoy:
swpd:现时可用的交换内存(单位KB)
free:系统可用内存数(以千字节为单位)
buff: 缓冲去中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。
(3)监控swap交换页面
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。
如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存已经不足。
(4)监控 io块设备
bi: 发送到块设备的块数,单位:块/秒。
bo: 从块设备接收到的块数,单位:块/秒。
(5)监控system系统
in: 每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)转换次数。
(6)监控cpu中央处理器:
us:用户进程使用的时间 。以百分比表示。
sy:系统进程使用的时间。 以百分比表示。
id:中央处理器的空闲时间 。以百分比表示。
us, sy, id, wa, st:这些都代表了CPU时间的消耗,它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。
这些CPU时间,可以让我们很快了解CPU是否出于繁忙状态。
注:
如果IO等待时间很长,那么系统的瓶颈可能在磁盘IO。
如果用户时间和系统时间相加非常大,CPU出于忙于执行指令。
如果有大量CPU时间消耗在用户态,也就是用户应用程序消耗了CPU时间。这不一定是性能问题,需要结合r队列,一起分析。
4mpstat -P ALL 1
该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。
MultiProcessor Statistics的缩写,是实时系统监控工具
其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
格式:mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
all : 指所有CPU
%usr : 显示在用户级别(例如应用程序)执行时CPU利用率的百分比
%nice :显示在拥有nice优先级的用户级别执行时CPU利用率的百分比
%sys : 现实在系统级别(例如内核)执行时CPU利用率的百分比
%iowait : 显示在系统有未完成的磁盘I/O请求期间CPU空闲时间的百分比
%irq : 显示CPU服务硬件中断所花费时间的百分比
%soft : 显示CPU服务软件中断所花费时间的百分比
%steal : 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%guest : 显示运行虚拟处理器时CPU花费时间的百分比
%idle : 显示CPU空闲和系统没有未完成的磁盘I/O请求情况下的时间百分比
系统有两个CPU。如果使用参数 -P 然后紧跟CPU编号得到指定CPU的利用率。
( Ubuntu安装: apt-get install sysstat)
5pidstat 1
pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态
6iostat -xz 1
iostat命令主要用于查看机器磁盘IO情况
r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。
await:IO操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。
avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。
%util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。
注:如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能
7free -m
free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。
最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。
注:
第二行-/+ buffers/cache,看上去缓存占用了大量内存空间。这是Linux系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。
如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加IO开销(可以在iostat命令中提现),降低系统性能。
8sar -n DEV 1
sar命令在这里可以查看网络设备的吞吐率。
在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。
9sar -n TCP,ETCP 1
sar命令在这里用于查看TCP连接状态,其中包括:
active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;
passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;
retrans/s:每秒TCP重传数量;
TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包。
10top
top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。
因此通过这个命令,可以相对全面的查看系统负载的来源。同时,top命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。
但是,top命令相对于前面一些命令,输出是一个瞬间值,如果不持续盯着,可能会错过一些线索。这时可能需要暂停top命令刷新,来记录和比对数据。
0条评论