怎样分析linux的性能指标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样分析linux的性能指标相关的知识,希望对你有一定的参考价值。

利用Loadrunner监控linux系统资源时,不知道分析系统的性能指标

LR

监控

UNIX/Linux

系统方法

一、准备工作:

1.

可以通过两种方法验证服务器上是否配置

rstatd

守护程序:

①使用

rup

命令,它用于报告计算机的各种统计信息,其中就包括

rstatd

的配置信息。使用命



rup

10.130.61.203,

此处

10.130.61.203

是要监视的

linux/Unix

服务器的

IP

,如果该命令返回相关的

统计信息。则表示已经配置并且激活了

rstatd

守护进程;若未返回有意义的统计信息,或者出现一

条错误报告,则表示

rstatd

守护进程尚未被配置或有问题。

②使用

find

命令

#find / -name rpc.rstatd,

该命令用于查找系统中是否存在

rpc.rstatd

文件,如果没有,说明系统没

有安装

rstatd

守护程序。

2



linux

需要下载

3

个包:



1



rpc.rstatd-4.0.1.tar.gz



2



rsh-0.17-14.i386.rpm



3



rsh-server-0.17-14.i386.rpm

3

.下载并安装

rstatd

如果服务器上没有安装

rstatd

程序(一般来说

LINUX

都没有安装)

,需要下载一个包才有这个服



,









rpc.rstatd-4.0.1.tar.gz.













,









,











rstatd









http://sourceforge.net/projects/rstatd

这个地址下载)下载后,开始安装,安装步骤如下:

tar -xzvf rpc.rstatd-4.0.1.tar.gz

cd rpc.rstatd-4.0.1/

./configure

—配置操作

make

—进行编译

make install

—开始安装

rpc.rstatd

—启动

rstatd

进程



rpcinfo -p

”命令来查看当前系统是否已经启动了

rstatd

守护进程

只要保证

Linux

机器上的进程里有

rstatd



xinetd

这二个服务就可以用

LR

去监视了,通过以下

两点可以检查是否启动:

1

)检查是否启动

: rsh server

监听的

TCP



514



[root@mg04 root]# netstat -an |grep 514

tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN

如果能看到

514

在监听说明

rsh

服务器已经启动。

2

)检查是否启动

: rstatd

输入命令

: rpcinfo -p

如果能看到类似如下信息:

程序版本协议端口

100001

5

udp

937

rstatd

100001

4

udp

937

rstatd

100001

3

udp

937

rstatd

100001

2

udp

937

rstatd

100001

1

udp

937

rstatd

那就说明

rstatd

服务启动了

,(

当然这里也可以用

ps ax

代替

)

4

.安装

rsh



rsh-server

两个服务包方法

a.

卸载

rsh

# rpm



q

rsh----------

查看版本号

# rpm

-e

版本号

---------

卸载该版本。

b

.安装

# rpm



ivh rsh-0.17-14.i386.rpm rsh-server-0.17-14.i386.rpm

在启动

rpc.rstatd

时,

会报错



Cannot register service: RPC: Unable to receive; errno = Ction refused





解决方法如下:

# /etc/init.d/portmap start

# /etc/init.d/nfs start

然后再次启动

rpc.rstatd

就好了。

5

.安装

xinetd

方法:

①查看

xinetd

服务:

[root@localhost ~]# rpm -q xinetd

xinetd-2.3.14-10.el5

②安装

xinetd

服务:

[root@localhost ~]# yum install xinetd

如果安装不起

xinetd

服务,执行下列操作命令后再次执行

yum install xinetd

命令进行安装:

yum clean packages

清除缓存目录下的软件包

yum clean headers

清除缓存目录下的

headers

yum clean oldheaders

清除缓存目录下旧的

headers

yum clean, yum clean all (= yum clean packages; yum clean oldheaders)

清除缓存目录下的软件包

及旧的

headers



6

.启动

xinetd

服务:

在有的系统中,通过如下命令重启:

# service xinetd reload

# /sbin/service xinetd rstart



suse linux

中如下操作:

cd /etc/init.d/xinetd restart

2



安装完成后配置

rstatd

目标守护进程

xinetd,

它的主配置文件是

/etc/xinetd.conf ,

它里面内容是

一些如下的基本信息:

#

# xinetd.conf

#

# Copyright (c) 1998-2001 SuSE GmbH Nuernberg, Germany.

# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.

#

defaults



log_type

= FILE /var/log/xinetd.log

log_on_success = HOST EXIT DURATION

log_on_failure = HOST ATTEMPT

#

only_from

= localhost

instances

= 30

cps

= 50 10

#

# The specification of an interface is interesting, if we are on a firewall.

# For example, if you only want to provide services from an internal

# network interface, you may specify your internal interfaces IP-Address.

#

#

interface

= 127.0.0.1



includedir /etc/xinetd.d

我们这里需要修改的是

/etc/xinetd.d/

下的三个

conf

文件

rlogin

,rsh,rexec

这三个配置文件

,

打这

三个文件里的

disable = yes

都改成

disable = no ( disabled

用在默认的



中禁止服务

)

或是把

# default:

off

都设置成

on

这个的意思就是在

xinetd

启动的时候默认都启动上面的三个服务

!

说明:我自己在配置时,没有

disable = yes

这项,我就将

# default: off

改为:

default: on

,重启后

(cd /etc/init.d/./xinetd restart

)通过

netstat -an |grep 514

查看,没有返回。然后,我就手动在三个文

件中最后一行加入

disable

=

no

,再重启

xinetd

,再使用

netstat

-an

|grep

514

查看,得到

tcp

0

0

0.0.0.0:514 0.0.0.0:* LISTEN

结果,表明

rsh

服务器已经启动。

看到网上有的地方说使用如下命令:

# service xinetd reload

# /sbin/service xinetd rstart

不知道是在什么系统用的。

二、监控

linux

资源:



controller

中,将

System resource Graphs

中的

Unix resources

拖到右侧的监控区域中,并单击

鼠标右键选择“

Add

Measurements



,

在弹出的对话框中输入被监控的

linux

系统的

IP

地址,然后选

择需要监控的性能指标,并点击“确定”

,出现如下结果:

Monitor name :UNIX Resources. Cannot initialize the monitoring on 10.10.15.62.

Error while creating the RPC client. Ensure that the machine can be connected and that it runs the

rstat daemon (use rpcinfo utility for this verification).

Detailed error: RPC: Failed to create RPC client.

RPC-TCP: Failed to establish RPC server address.

RPC-TCP: Failed to communicate with the portmapper on host '10.10.15.62'.

RPC: RPC call failed.

RPC-TCP: recv()/recvfrom() failed.

RPC-TCP: Timeout reached. (entry point: CFactory::Initialize). [MsgId: MMSG-47190]

检查原因,发现是

Linux

系统中的防火墙开启了并且阻挡了

LoadRunner

监控

Linux

系统的资源,

因此要将防火墙关闭。

关闭防火墙:

[root@localhost ~]# /etc/init.d/iptables stop;

三、监控

UNIX

lr

监控

UNIX



UNIX

先启动一

rstatd

服务

以下是在

IBM AIX

系统中启动

rstatd

服务的方法:

1

.使用

telnet



root

用户的身份登录入

AIX

系统

2

.在命令行提示符下输入:

vi /etc/inetd.conf

3

.查找

rstatd

,找到

#rstatd

sunrpc_udp

udp

wait

root /usr/sbin/rpc.rstatd rstatd 100001 1-3

4

、将

#

去掉

5



:wq

保存修改结果

6

、命令提示符下输入:

refresh



s inetd

重新启动服务。

这样使用

loadrunner

就可以监视

AIX

系统的性能情况了。

注:在

HP UNIX

系统上编辑完

inetd.conf

后,重启

inetd

服务需要输入

inetd -c

UNIX

上也可以用

rup

命令查看

rstatd

程序是否被配置并激活



rstatd

程序已经运行,

重启时,

先查看进程

ps -ef |grep inet



然后杀掉进程,



refresh



s inetd

进行重启。追问

嗯,我知道这是要监控linux的准备工作,我想问的是linux性能指标和windows的性能指标是一样的吗?和windows性能指标一样分析吗?

参考技术A 一、CPU

1、良好状态指标

CPU利用率:User Time
<= 70%,System Time <= 35%,User Time + System
Time <= 70%。
上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。
可运行队列:每个处理器的可运行队列<=3个线程。

2、监控工具

vmstat

$ vmstat 1

procs -----------memory---------- ---swap-------io---- --system--
-----cpu------

r b swpd free buff cache si so bi bo in cs
us sy id wa st

14 0 140 2904316 341912 3952308 0 0 0 4601106 9593 36 64 1 0 0

17 0 140 2903492 341912 3951780 0 0 0 0 1037 9614 35 65 1 0 0

20 0 140 2902016 341912 3952000 0 0 0 0 1046 9739 35 64 1 0 0

17 0 140 2903904 341912 3951888 0 0 0 76 1044 9879 37 63 0 0 0

16 0 140 2904580 341912 3952108 0 0 0 0 1055 9808 34 65 1 0 0

重要参数:

r,run queue,可运行队列的线程数,这些线程都是可运行状态,只不过CPU暂时不可用;

b,被blocked的进程数,正在等待IO请求;

in,interrupts,被处理过的中断数

cs,context switch,系统上正在做上下文切换的数目

us,用户占用CPU的百分比

sys,内核和中断占用CPU的百分比

id,CPU完全空闲的百分比

上例可得:

sy高us低,以及高频度的上下文切换(cs),说明应用程序进行了大量的系统调用;

这台4核机器的r应该在12个以内,现在r在14个线程以上,此时CPU负荷很重。

查看某个进程占用的CPU资源

$ while :; do ps -eo pid,ni,pri,pcpu,psr,comm
| grep 'db_server_login'; sleep 1;
done

PID NIPRI %CPU PSR COMMAND

28577 0
23 0.0 0
db_server_login

28578 0
23 0.0 3
db_server_login

28579 0
23 0.0 2
db_server_login

28581 0
23 0.0 2
db_server_login

28582 0
23 0.0 3
db_server_login

28659 0
23 0.0 0
db_server_login

……

二、Memory

1、良好状态指标

swap
in
(si)
==
0,swap
out
(so)
==
0
应用程序可用内存/系统物理内存
<=
70%

2、监控工具

vmstat

$ vmstat 1

procs -----------memory---------- ---swap-------io---- --system--
-----cpu------

r b swpd free buff cache si so bi bo in csus
sy id wa st

0 3 252696 2432 268 7148 3604 2368 3608 2372 288 288 0 0 21 78 1

0 2 253484 2216 228 7104 5368 2976 5372 3036 930 519 0 0 0 100 0

0 1 259252 2616 128 6148 19784 18712 19784 18712 3821
1853 0 1 3 95 1

1 2 260008 2188 144 6824 11824 2584 12664 2584 1347 1174 14 0 0 86 0

2 1 262140 2964 128 5852 24912 17304 24952 17304 4737 2341 86
10 0 0 4

重要参数:

swpd,已使用的 SWAP 空间大小,KB 为单位;

free,可用的物理内存大小,KB 为单位;

buff,物理内存用来缓存读写操作的buffer大小,KB 为单位;

cache,物理内存用来缓存进程地址空间的 cache 大小,KB 为单位;

si,数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位;

so,数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位。

上例可得:

物理可用内存 free 基本没什么显著变化,swapd逐步增加,说明最小可用的内存始终保持在 256MB(物理内存大小) * 10% = 2.56MB 左右,当脏页达到10%的时候就开始大量使用swap。

free

$ free -m

total used free shared buffers cached

Mem: 8111 7185 926 0 243 6299

-/+ buffers/cache: 643 7468

Swap: 8189 0 8189

三、磁盘IO

1、良好状态指标

iowait % < 20%

提高命中率的一个简单方式就是增大文件缓存区面积,缓存区越大预存的页面就越多,命中率也越高。

Linux 内核希望能尽可能产生次缺页中断(从文件缓存区读),并且能尽可能避免主缺页中断(从硬盘读),这样随着次缺页中断的增多,文件缓存区也逐步增大,直到系统只有少量可用物理内存的时候 Linux 才开始释放一些不用的页。

2、监控工具

查看物理内存和文件缓存情况

$ cat /proc/meminfo

MemTotal: 8182776 kB

MemFree: 3053808 kB

Buffers: 342704 kB

Cached: 3972748 kB

这台服务器总共有 8GB 物理内存(MemTotal),3GB 左右可用内存(MemFree),343MB左右用来做磁盘缓存(Buffers),4GB左右用来做文件缓存区(Cached)。

sar

$ sar -d 2 3

Linux 2.6.9-42.ELsmp (webserver) 11/30/2008_i686_ (8 CPU)

11:09:33 PM DEV tps rd_sec/s wr_sec/s avgrq-szavgqu-sz await svctm
%util

11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.000.00 0.00

11:09:35 PM DEV tps rd_sec/s wr_sec/s avgrq-szavgqu-sz await svctm
%util

11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.000.00 0.00 0.00

11:09:37 PM DEV tps rd_sec/s wr_sec/s avgrq-szavgqu-sz await svctm
%util

11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.000.50 0.25 0.05

Average: DEV tpsrd_sec/s wr_sec/s avgrq-sz
avgqu-sz await svctm %util

Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.330.17 0.02

重要参数:

await表示平均每次设备I/O操作的等待时间(以毫秒为单位)。

svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)。

%util表示一秒中有百分之几的时间用于I/O操作。

如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。

四、Network IO

对于UDP

1、良好状态指标

接收、发送缓冲区不长时间有等待处理的网络包

2、监控工具

netstat

对于UDP服务,查看所有监听的UDP端口的网络情况

$ watch netstat -lunp

Proto Recv-Q Send-Q Local
Address
Foreign
Address
State
PID/Program name

udp
0
0
0.0.0.0:64000
0.0.0.0:*
-

udp
0
0
0.0.0.0:38400
0.0.0.0:*
-

udp
0
0
0.0.0.0:38272
0.0.0.0:*
-

udp
0
0
0.0.0.0:36992
0.0.0.0:*
-

udp
0
0
0.0.0.0:17921
0.0.0.0:*
-

udp
0
0
0.0.0.0:11777
0.0.0.0:*
-

udp
0
0
0.0.0.0:14721
0.0.0.0:*
-

udp
0
0
0.0.0.0:36225
0.0.0.0:*
-

RecvQ、SendQ为0,或者不长时间有数值是比较正常的。

对于UDP服务,查看丢包情况(网卡收到了,但是应用层没有处理过来造成的丢包)

$ watch netstat -su

Udp:

278073881
packetsreceived

4083356897
packetsto unknown port received.

2474435364
packet
receive errors

1079038030
packetssent

packet receive errors 这一项数值增长了,则表明在丢包

对于TCP(来自davidshan单卫的经验,thx~~)

1、良好状态指标

对于TCP而言,不会出现因为缓存不足而存在丢包的事,因为网络等其他原因,导致丢了包,协议层也会通过重传机制来保证丢的包到达对方。

所以,tcp而言更多的专注重传率。

2、监控工具

# cat /proc/net/snmp | grep Tcp:

Tcp: RtoAlgorithm RtoMin RtoMaxMaxConn ActiveOpens PassiveOpens
AttemptFails EstabResets CurrEstab InSegsOutSegs RetransSegs
InErrs OutRsts

Tcp: 1 200 120000 -1 78447 413 50234 221 35984652 5653408 156800 0
849

重传率 = RetransSegs / OutSegs

至于这个值在多少范围内,算ok的,得看具体的业务了。

业务侧更关注的是响应时间。

性能分析工具汇总

CPU性能分析工具:

vmstat

ps

sar

time

strace

pstree

top

Memory性能分析工具:

vmstat

strace

top

ipcs

ipcrm

cat /proc/meminfo

cat /proc/slabinfo

cat /proc//maps

I/O性能分析工具:

vmstat

ipstat

repquota

quotacheck

Network性能分析工具:

ifconfig

ethereal

tethereal

iptraf

iwconfig

nfsstat

mrtg

ntop

netstat

cat /proc/sys/net
参考技术B 一、处理器参数
这是一个很简单的参数,它直观的描述了每个CPU的利用率。在xSeries架构中,如果CPU的利用率长时间的超过80%,就可能是出现了处理器的瓶颈。
Runable processes
这个值描述了正在准备被执行的进程,在一个持续时间里这个值不应该超过物理CPU数量的10倍,否则CPU方面就可能存在瓶颈。
Blocked
描述了那些因为等待I/O操作结束而不能被执行的进程,Blocked可能指出你正面临I/O瓶颈。
User time
描述了处理用户进程的百分比,包括nice time。如果User time的值很高,说明系统性能用在处理实际的工作。
System time
描述了CPU花费在处理内核操作包括IRQ和软件中断上面的百分比。如果system time很高说明系统可能存在网络或者驱动堆栈方面的瓶颈。一个系统通常只花费很少的时间去处理内核的操作。
Idle time
描述了CPU空闲的百分比。
Nice time
描述了CPU花费在处理re-nicing进程的百分比。
Context switch
系统中线程之间进行交换的数量。
Waiting
CPU花费在等待I/O操作上的总时间,与blocked相似,一个系统不应该花费太多的时间在等待I/O操作上,否则你应该进一步检测I/O子系统是否存在瓶颈。
Interrupts
Interrupts值包括硬Interrupts和软Interrupts,硬Interrupts会对系统性能带
来更多的不利影响。高的Interrupts值指出系统可能存在一个软件的瓶颈,可能是内核或者驱动程序。注意Interrupts值中包括CPU时钟导
致的中断(现代的xServer系统每秒1000个Interrupts值)。
二、内存参数
Free memory
相比其他操作系统,Linux空闲内存的值不应该做为一个性能参考的重要指标,因为就像我们之前提到过的,Linux内核会分配大量没有被使用的内存作为文件系统的缓存,所以这个值通常都比较小。
Swap usage
这个值描述了已经被使用的swap空间。Swap
usage只表示了Linux管理内存的有效性。对识别内存瓶颈来说,Swap In/Out才是一个比较又意义的依据,如果Swap
In/Out的值长期保持在每秒200到300个页面通常就表示系统可能存在内存的瓶颈。
Buffer and cache
这个值描述了为文件系统和块设备分配的缓存。注意在Red Hat Enterprise Linux
3和更早一些的版本中,大部分空闲内存会被分配作为缓存使用。在Red Hat Enterprise Linux
4以后的版本中,你可以通过修改/proc/sys/vm中的page_cache_tuning来调整空闲内存中作为缓存的数量。
Slabs
描述了内核使用的内存空间,注意内核的页面是不能被交换到磁盘上的。
Active versus inactive memory
提供了关于系统内存的active内存信息,Inactive内存是被kswapd守护进程交换到磁盘上的空间。
三、网络参数
Packets received and sent
这个参数表示了一个指定网卡接收和发送的数据包的数量。
Bytes received and sent
这个参数表示了一个指定网卡接收和发送的数据包的字节数。
Collisions per second
这个值提供了发生在指定网卡上的网络冲突的数量。持续的出现这个值代表在网络架构上出现了瓶颈,而不是在服务器端出现的问题。在正常配置的网络中冲突是非常少见的,除非用户的网络环境都是由hub组成。
Packets dropped
这个值表示了被内核丢掉的数据包数量,可能是因为防火墙或者是网络缓存的缺乏。
Overruns
Overruns表达了超出网络接口缓存的次数,这个参数应该和packets dropped值联系到一起来判断是否存在在网络缓存或者网络队列过长方面的瓶颈。
Errors
这个值记录了标志为失败的帧的数量。这个可能由错误的网络配置或者部分网线损坏导致,在铜口千兆以太网环境中部分网线的损害是影响性能的一个重要因素。
四、块设备参数
Iowait
CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。
Average queue length
I/O请求的数量,通常一个磁盘队列值为2到3为最佳情况,更高的值说明系统可能存在I/O瓶颈。
Average wait
响应一个I/O操作的平均时间。Average wait包括实际I/O操作的时间和在I/O队列里等待的时间。
Transfers per second
描述每秒执行多少次I/O操作(包括读和写)。Transfers per second的值与kBytes per second结合起来可以帮助你估计系统的平均传输块大小,这个传输块大小通常和磁盘子系统的条带化大小相符合可以获得最好的性能。
Blocks read/write per second
这个值表达了每秒读写的blocks数量,在2.6内核中blocks是1024bytes,在早些的内核版本中blocks可以是不同的大小,从512bytes到4kb。
Kilobytes per second read/write
按照kb为单位表示读写块设备的实际数据的数量。
参考技术C 不知道你是不是指性能测试,使用UnixBench跑一下就有了。
各测试指标的说明请看链接
https://teddysun.com/245.html

以上是关于怎样分析linux的性能指标的主要内容,如果未能解决你的问题,请参考以下文章

linux性能优化如何定位系统内存的问题

linux性能优化如何分析系统I/O瓶颈

mysql性能瓶颈分析性能指标指标搜集方法与性能分析调优工具

web性能监控与分析

通过命令iostat,iotop查看Linux系统IO性能,信息指标分析详解

Jmeter之性能测试指标介绍