1 为什么需要监控服务器指标

要进行性能调优,首先我们要找到程序的性能瓶颈在哪里?而要知道性能瓶颈在哪里,我们需要借助一定的工具进行处理。

windows操作系统下,当我们的系统运行很慢的时候,80%的人首先查看的就是任务管理器,因为它可以让我们快读的知道是那个程序占用了较多的资源(如CPU、内存、磁盘I/O等),或者是那个进程不能响应导致整个操作系统巨卡,我们通过任务管理器可以轻松的查看和管理我们的应用程序。

另外,对于运行在JVM上的服务器(如TomcatJBossWeblogic等等),通过监控JVMCPU、内存、线程、垃圾回收等情况可以了解JVM的运行情况,是否需要调优JVM参数。

 

如果不是使用工具自带的监控功能,而是使用第三方的监控工具,如LinuxTopJConsole,也是能监控服务器的相关指标,但这种对长时间测试作用不大,因为用户不可能一直盯着显示器看。性能测试有时会有些突发情况,如内存回收之类时占CPU很大,有时是运行一天,或二天,或几个小时才出现的,如果那个时刻没盯着显示器看,可能就忽视了

另外,CPU大时,可能吞吐量、请求数、或者用户失败了,这是相关的,需要知道CPU大时那时刻的其他指标反映,这就需要对比曲线,或过滤CPU大于某个值(如70%)时,其他指标当时的情况,这些才能有效定位问题。如在2小时时,出现用户失败比较多,这时就需要看下当时的服务器指标CPU、内存、IO之类的,才好定位问题

       kylinPET工具长时间记录指标数据,可以用于定位问题,如比较图表、过滤之类的,不然用其他监控工具很难与测试指标结合起来(需要精确到秒),如果不结合起来,定位问题就难了

2 资源监控器(Monitor Agent

2.1 监控代理器介绍

业务性能测试时,通常还需要记录业务服务器的资源数据,如CPU、内存、线程数、I/O、吞吐量,将它们与运行日志、或指标数据进行曲线对比,则可展示某段时间的资源指标值、普通指标值,这样可辅助定位性能问题。如,用户失败数量在某时刻很高,是否由于CPU占用太高导致。

各项指标作用可以参照下面网址:

http://www.docin.com/p-509128282.html

http://wenku.baidu.com/view/86606a45a8956bec0975e3a4.html

http://wenku.baidu.com/link?url=sG9FXg3RybIFambpuDBqvjf0Zwh9N2CrOcPXzhZsOyAYtvAKHBOaE08esI83g4jp79hqqH7yfX4-iHSNB4wF-05ec-S4J0YQGBuSNk0Kfhy

http://wenku.baidu.com/view/103943d2b9f3f90f76c61b44.html

http://wenku.baidu.com/view/48390a85d4d8d15abe234e44.html

http://wenku.baidu.com/view/63dad608b52acfc789ebc923.html

资源组

信息

资源指标条目

描述

CPU

列出监控代理器的CPU信息。Total代表所有CPU1代表第1CPU线程;4代表第4CPU线程。

% CPU Time

CPU占用率,包括用户进程与系统进程

% User Time

用户占用率,用户进程使用的CPU

% System Time

系统占用率,系统进程使用的CPU

% Interrupt Time

中断率

Memory

内存

内存只有一个Total选项,表示所有内存

Free Memory

内存可用空间,单位为MB

% Free Memory

内存可用空间占总内存的百分比

Used Memory

内存已用空间,单位为MB

% Used Memory

内存已用空间占总内存的百分比

Swap

交换分区

只有一个Total选项,表示所有交换分区

Pages In

读取的总页数

Pages In/s

每秒读取的页数

Pages Out

写入的总页数

Pages Out/s

每秒写入的页数

Free Swap

交换分区可用空间,单位为MB

% Free Swap

交换分区可用空间占总大小的百分比

Used Swap

交换分区已用空间,单位为MB

% Used Swap

交换分区已用空间占总大小的百分比

Total Swap

交换分区的总大小

Process

进程

列出监控代理器的所有进程信息。包括进程名称与进程id

% CPU Time

进程占用CPU百分率

% User Time

进程占用CPU用户处理的百分率

% System Time

进程占用CPU系统处理的百分率

Virtual Memory

进程虚拟内存大小

Page Faults/s

进程每秒钟处理的错误页数

Threads

进程的线程个数

Disk

磁盘

列出监控代理器的磁盘信息。Total代表所有磁盘;C:\代表C盘。

Queue

当前处理对列的长度

Read Bytes/s

每秒读取的字节,单位KB

Read Times/s

每秒读取的次数

Write Bytes/s

每秒写入的字节,单位KB

Write Times/s

每秒写入的次数

Network

网络

列出监控代理器的所有网卡

Receive Bytes/s

每秒接收的字节,单位KB/s

Receive Packets/s

每秒接收的报文个数

Send Bytes/s

每秒发送的字节,单位KB/s

Send Packets/s

每秒发送的报文个数

Receive Dropped/s

每秒丢弃接收的报文个数

Send Dropped/s

每秒丢弃发送的报文个数

Receive Errors/s

每秒收到错误报文的个数

Send Errors/s

每秒发送错误报文的个数

2.2 Monitor Agent(监控代理器)安装与运行

监控代理器必须与被测服务系统安装在同一台服务器上

2.2.1 下载

1)  Linux版本下载地址

http://www.kylinpet.com/cloud/download/kylinPET_Cloud.tar.gz

2)  Windows版本下载地址

http://www.kylinpet.com/cloud/download/scripter.exe

 

2.2.2 安装

 

Copy目录下的jre目录(linux系统为jrelinux版本)、 monitorAgent目录

说明:

1.          Monitor Agent是运行在业务服务器上,监控业务服务器的CPU、内存、I/O等资源。

2.          一般业务服务器为linux系统,则copy目录jre linux与目录monitorAgent即可。

3.          如果linux系统已经存在JDK1.6以上版本,且JAVA环境变量已经设置,则不需复制jre linux目录,而只要命令行运行java -jar monitor.jar

2.2.3 运行

1)        windows操作系统上直接双击monitor.bat运行,或命令窗口输入monitor.bat

2)        linux操作系统上进入monitorAgent目录,输入./monitor.sh运行

3)        运行成功,将显示正在监听5000端口

注意:

如果运行失败,程序将自动退出。即没有显示port=5000,则表示5000端口被占用,请先关闭该端口先;失败在目录下的run.log里将包括日志port=5000:Address already in use: JVM_Bind

2.3 添加监控代理器

2.3.1 连接监控代理器

2.3.2 监控代理器窗口介绍

²  “监控资源项”窗口:列出该监控代理器的所有监控指标

²  添加资源指标:选择左边监控资源的指标(叶子节点),然后选择右边“监控资源”列表里的一项,单击“确定添加”,添加成功则会在 “监控指标”表格里添加该记录。

如图,选择“%CPU Time”表示监控CPU的百分比,右边的Total1234,其中1-4表示该机器有4CPU线程,分别对应每个CPU线程,Total表示监控所有CPU

注意:

1.          选择下面表格里的监控代理器,然后选择左边监控资源的指标(叶子节点),如果在右上面的“监控资源”里没有列出信息,则表示没有获取到监控代理器的信息;需要先关闭窗口,然后在“监控树”选择该代理器,右键菜单选择“断开”,然后再右键菜单选项“连接”,重新获取监控代理器的信息。

²  删除资源指标:

 删除“监控指标”表格中选择的指标项,也可按键盘del

²  刷新资源指标:

如果监控的服务器进程(如重启进程导致ID发生变化)或资源发生变化,可通过点击刷新重新获取监控器资源并刷新列表。

2.3.3 运行测试并查看资源监控项曲线

3 监控JVM

3.1 介绍

资源组

资源指标条目

描述

JVM

% CPU Time

CPU占用率

线程

当前JVM正在运行的线程数

堆内存使用使用率

堆内存使用/堆内存提交

堆内存使用

JVM堆内存占用的空间,单位为MB

堆内存提交

JVM堆内存提交的空间,单位为MB

堆内存最大

JVM堆内存最大能占用的空间,单位为MB

非堆内存使用使用率

非堆内存使用/非堆内存提交

非堆内存使用

JVM非堆内存占用的空间,单位为MB

非堆内存提交

JVM非堆内存提交的空间,单位为MB

非堆内存最大

JVM非堆内存最大能占用的空间,单位为MB

持久堆内存使用使用率

持久堆内存使用/持久堆内存提交

持久堆内存使用

JVM持久堆内存占用的空间,单位为MB

持久堆内存提交

JVM持久堆内存提交的空间,单位为MB

持久堆内存最大

JVM持久堆内存最大能占用的空间,单位为MB

垃圾回收次数

垃圾全回收的次数,全回收会导致业务暂停一段时间

垃圾回收时间

垃圾全回收的时间

3.2 JVM/Tomcat参数设置与运行

3.2.1 JVM监控支持包括Tomcat/JBoss/Weblogic/Jetty/Resin

JVM服务器包括TomcatJBossWeblogicJettyResin等等这些由JAVA运行的WEB服务器。

3.2.2 参数设置

JVM服务器在启动前添加JVM参数,如Tomcat可以在bin目录下的catalina.batLinuxcatalina.sh)里添加

set JAVA_OPTS=-Xms256m -Xmx512m  -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=192.168.1.7 -Dcom.sun.management.jmxremote.port=8000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

其中:

-Djava.rmi.server.hostname=192.168.1.7为绑定的IP

-Dcom.sun.management.jmxremote.port=8000为监听的端口

-Dcom.sun.management.jmxremote.authenticate=false不使用鉴权,工具默认为admin/admin

-Dcom.sun.management.jmxremote.ssl=false不使用SSL

各个服务器的JVM参数配置方法可在网上查找

3.2.3 启动服务器

启动服务器,然后使用netstat命令查看8000端口是否监听

3.3 Controller添加JVM监控

3.3.1 打开JVM监控窗口

在运行界面的“监控项”右键弹出菜单

3.3.2 JVM监控窗口介绍

²  “监控资源”窗口:列出该监控代理器的所有监控指标

²  添加资源指标:选择左边监控资源的指标(叶子节点),然后选择右边“监控资源”列表里的一项,单击添加按钮,添加成功则会在的“监控指标”表格里添加该记录。

如图,选择“%CPU Time”表示监控CPU的百分比,右边的Total1234,其中1-4表示该机器有4CPU线程,分别对应每个CPU线程,Total表示监控所有CPU

注意:

1、   选择下面表格里的监控代理器,然后选择左边监控资源的指标(叶子节点),如果在右上面的“监控资源”里没有列出信息,则表示没有获取到监控代理器的信息;需要先关闭窗口,然后在“监控树”选择该代理器,右键菜单选择“断开”,然后再右键菜单选项“连接”,重新获取监控代理器的信息。

²  删除资源指标:

 删除“监控指标”表格中选择的指标项,也可按键盘del