linux常用服务软件搭建及使用技巧
一、Webmin安装:
Webmin 是一个基于浏览器的管理工具,可以应用于Linux 和其他一些平台,提供了可以完成很多管理和操作任务的图形化界面
•安装完成后,root 用户会被自动创建,密码为系统的root密码
(下载地址:URL:http://www.webmin.com/)
安装步骤: rpm -ivh webmin-1.250-1.noarch.rpm
使用步骤:Http://ip:10000/
-----------------------------------------------------------------------------------
二、Linux防火墙相关命令:
1). 敲入 /etc/init.d/iptables stop,关闭之后再次查看80.112.*.*:8080(即ip:8080),可以成功访问。
但是貌似安全隐患大大增加……
2). 敲入 /etc/init.d/iptables status,查看防火墙信息,可以看到打开的端口
3).如果只需 把要使用的端口打开,命令如下:
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT #8080为指定端口
4). /etc/rc.d/init.d/iptables save #将更改进行保存
5). /etc/init.d/iptables restart #重启防火墙以便改动生效
还有另外直接在 /etc/sysconfig/iptables中增加一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
停止防火墙 service iptables stop (iptables –F 关闭防火墙)
启动防火墙 service iptables start
查看防火墙配置 iptables -L -n
chkconfig iptables on //永久性启动防火墙
chkconfig iptables off //永久性关闭防火墙
----------------------------------------------------------------------------
三、Gcc安装方法(redhat 4):
一、安装步骤
1、使用which gcc命令查看gcc是否安装安装
2、如若没有安装则下载如下安装包,所需安装包如下
一共需要拷贝以下五个安装包:
binutils-2.13.90.0.18-9.i386.rpm
glibc-devel-2.3.2-11.9.i386.rpm
cpp-3.2.2-5.i386.rpm
glibc-kernheaders-2.4-8.10.i386.rpm
gcc-3.2.2-5.i386.rpm
安装顺序如下:(如若在rpmp安装过程中出现依赖关系,则增加—nodeps参数)
Rpm –ivh binutils-2.13.90.0.18-9.i386.rpm
Rpm -ivh cpp-3.2.2-5.i386.rpm
Rpm -ivh glibc-kernheaders-2.4-8.10.i386.rpm
Rpm -ivh glibc-devel-2.3.2-11.9.i386.rpm
Rpm -ivhgcc-3.2.2-5.i386.rpm
四、Apache服务安装:
一、安装apache(http服务)
1. 从apache.org下载源码安装包
2. 解压缩
# tar zxf httpd-2.2.4.tar.gz
# cd httpd-2.2.4
3. 安装apache依赖包apr和apr-util,他们都在srclib目录中
3.1 安装apr
# cd srclib/apr
# ./configure --prefix=/usr/local/apr
# make
# make install
3.2 安装apr-util
# cd ../apr-util
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install
4.安装httpd
# cd ../../
# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-rewrite
# make
# make install
--enable-so 支持DSO模式(动态模块加载方式)
--enable-rewrite 支持rewrite(地址重定向)
等这些都装完后,打开浏览器,输入你安装apache所在的服务器地址,看起来像这个样子:
http://192.168.1.3/
如果页面显示如下:
It works!
恭喜你,apache安装成功了~
# 当开启apache服务时,提示错误信息 httpd: apr_sockaddr_info_get() failed for bogon
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
解决方法:
/etc/httpd/conf/httpd.conf 中设定 ServerName。所以apache会用主机上的名称来取代,首先会去找 /etc/hosts 中有没有主机的定义。
所以要解决这个问题可以设定httpd.conf文件中的 ServerName,如下:
(1)ServerName localhost:80
五、VSFTP安装:
安装之前的准备:
–mkdir /var/ftp
–useradd -d /var/ftp -s /sbin/nologin ftpuser
–passwd ftpuser
–chown ftpuser:root /var/ftp
•安装
–以下步骤需要在vsftpd-2.0.3.tar.gz所在的文件夹操作
–gzip -d vsftpd-2.0.3.tar.gz
–tar xvf vsftpd-2.0.3.tar
–cd vsftpd-2.0.3
–make
–make install
–cp RedHat/vsftpd.pam /etc/pam.d/ftp
–cp vsftpd.conf /etc/
–vi /etc/vsftpd.conf
删除下面三行中的#
# local_enable =YES
# write_enable=YES
# local_umask=022
增加:listen=YES (vsftpd独立启动,需要删除在系统服务中启动)
•服务启动
–vsftpd &
•服务停止
–ps –A | grep vsftpd
–kill -9 id
测试
–在windows打开IE输入:ftp://ip/
–从windows中拷贝文件到ftp中
–使用CuteFTP 7 Professional,FTP客户端工具
•错误以及处理:
–错误:vsftpd启动时显示:500 OOPS: could not bind listening IPv4 socket
–原因:vsftpd已经启动
–处理:
如果vsftpd独立启动,则使用kill杀掉进程,再次启动
如果vsftpd在xinetd中启动,则从其xinetd服务
/etc/rc.d/init.d/xinetd restart
六、LoadRunner如何监控Linux下的系统资源:
条件一:
前一时间在研究LoadRunner过程中,在进行压力场景测试中通过LoadRunner来实时监控windows的系统资源,在前几节中我已经总结了相关过程,近段时间发现群里有朋友问如何监控Linux下的系统资源,所以我也就此问题搭建了一些的Linux环境,并在Linux下部署了一个web应用程序,来进行压力测试实例的讲解,在此就总结了如何设置LoadRuner来实时监控Linux系统资源。
关于LoadRunner监控Linux系统资源,大致分为以下步骤:
1、在监控Linux之前我想阐述的观点是,Liunx系统机制与windows大致相同,要监控并得到他的相关参数必须需要得到它的同意,这就是操作系统,所以你必须有足够的权限和方法才能获得,关于Linux在LR中也相关添加区域,与windows享有同等的地位。在windows中需要开启许多许多权限,以及一些远程访问的进程,当前在Linux中也不例外,在Linux下有一个进程是必须的,那就是系统守护进程rpc.restat,相信守护进程大家并不陌生,通常在Linux系统的引导的时候启动的很多服务,这些服务就是守护进程,而且它脱离于终端在后台运行的。
所以首先要查看系统是否开启了rpc服务,通过命令rpcinfo -p来查看
如上图可以看到,如果开启了四个rstatd服务就说明,该rpc守护进程服务启动是成功的。如果没有该服务,就需要手动安装了
下载地址:http://heanet.dl.sourceforge.net/sourceforge/rstatd/
安装:一次执行--tar -xzvf rpc.rstatd-4.0.1.tar.gz //解压安装包
cd rpc.rstatd-4.0.1 //进入到rpc.rstatd目录中
./configure //配置rc.rstatd安装
make //编辑rc.rstatd
make install //安装
2、重启端口映射服务portmap
/etc/rc.d/init.d/portmap start //启动portmap
找到portmap服务就ok
3、通过命令rpcinfo -p来检测即可,如1中图所示证明,服务安装和启动是成功的。
4、在LoadRunner场景中添加linux系统资源项
这里需要注意的一点是,当我们第一次添加linux资源服务时,可能会提示错误信息,提示为rpc服务在客户端添加失败,如果遇到这种情况,可能大家又觉得又要失望,不要担心,分析错误的原因,基本可以确定远程没有获取到rpc服务,应该是被什么被劫持了,来看看系统防火墙,cat /etc/sysconfig/iptables的配置,果然需要加入rpc访问策略,为此我关闭了防火墙服务,所以就不需要设置防火墙策略了,命令为:
chkconfig iptables on //永久性启动防火墙
chkconfig iptables off //永久性关闭防火墙
关闭防火墙之后再在LoadRunner场景中添加Linux资源,如下图所示:
看到如上的图表和曲线图就表示配置ok了,攻破LoadRunner我们取得一些进步。
条件二:
一 简述:LoadRunner监控Linux资源时弹出如下错误:
Monitor name :UNIX Resources. Cannot initialize the monitoring on 192.168.52.189. 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.
上述问题的实质是Linux系统中未安装rpc.rstatd,服务未开启的原因造成。
于是接下来就验证我们的推测:
首先查看rpc.rstatd是否安装
以下是代码片段:
[root@localhost bin]# whereis rpc.rstatd
发现系统未安装rpc.rstatd
备注:rstatd Rstat协议允许网络上的用户获得同一网络上各机器的性能参数。
二 准备下载包:下载rpc.rstatd-4.0.1.tar.gz安装包
下载地址:http://sourceforge.net/projects/rstatd
利用ssh客户端上传rpc.rstatd-4.0.1.tar.gz包至Linux下/home/Michael/tool/目录下
三 执行安装程序包:
以下是代码片段:
tar -xzvf rpc.rstatd-4.0.1.tar.gz //解压rcp.rstatd
cd rpc.rstatd-4.0.1 //进入到rpc.rstatd目录中
./configure //配置rc.rstatd的安装,以下我的是按照默认方式的
make //编译rc.rstatd
make install // 安装
四 重启xinetd
以下是代码片段:
/etc/init.d/xinetd restart
五 修改etc/xinetd.d目录下面的3个conf (rlogin, rsh, rexec)中的disable置均设置为no
以下是代码片段:
cd /etc/xinetd.d //进入到etc/xinetd.conf目录中
Vi rlogin //编辑disable=no,保存
Vi rsh // 编辑disable=no,保存
Vi rexec //编辑disable=no,保存
六 启动rpc.rstatd和检测
以下是代码片段:
rpc.rstatd //启动rpc.rstatd进程
rpcinfo –p // 执行此命令检查rpc服务的状态
[root@localhost xinetd.d]# rpcinfo -p
程序版本协议 端口
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32768 status
100024 1 tcp 32769 status
100001 5 udp 867 rstatd
100001 3 udp 867 rstatd
100001 2 udp 867 rstatd
100001 1 udp 867 rstatd
七 利用Loadunner中的Controller监控Linux资源
1 在controller中,将Systeme Resourece Graphs中的UNIX resources拖到右键的资源监控区域
2 鼠标右键选择Add Measurements,添加被监控linux的IP地址192.168.52.189,选择需监控的性能指标,确认后,如下图所示即表示成功^_^
条件三:
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系统资源(Dstat):
你可以使用Dstat可以查看实时系统的所有资源,将你的磁盘利用率同你的智能磁盘设备控制器的中断情况进行比对,或比较与磁盘吞吐量的网络带宽,都是数字比较直观。
Dstat 监测结果带颜色,看着更直观,方便。
官方网站:http://packages.sw.be/dstat/
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics
常用参数用法(Dstat options):
-c, --cpu enable cpu stats
-C 0,3,total include cpu0, cpu3 and total
-d, --disk enable disk stats
-D total,hda include hda and total
-g, --page enable page stats
-i, --int enable interrupt stats
-I 5,eth2 include int5 and interrupt used by eth2
-l, --load enable load stats
-m, --mem enable memory stats
-n, --net enable network stats
-N eth1,total include eth1 and total
-p, --proc enable process stats
-r, --io enable io stats (I/O requests completed)
-s, --swap enable swap stats
-S swap1,total include swap1 and total
-t, --time enable time/date output
-T, --epoch enable time counter (seconds since epoch)
-y, --sys enable system stats
--aio enable aio stats
--fs, --filesystem enable fs stats
--ipc enable ipc stats
--lock enable lock stats
--raw enable raw stats
--socket enable socket stats
--tcp enable tcp stats
--udp enable udp stats
--unix enable unix stats
--vm enable vm stats
--plugin-name enable plugins by plugin name (see manual)
--list list all available plugins
-a, --all equals -cdngy (default)
-f, --full automatically expand -C, -D, -I, -N and -S lists
-v, --vmstat equals -pmgdsc -D total
--float force float values on screen
--integer force integer values on screen
--bw, --blackonwhite change colors for white background terminal
--nocolor disable colors (implies --noupdate)
--noheaders disable repetitive headers
--noupdate disable intermediate updates
--output file write CSV output to file
delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)
nginx $> dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 2 97 1 0 0| 57k 167k| 0 0 | 0 0 | 40 74
0 0 100 0 0 0| 0 0 | 152B 826B| 0 0 | 8 10
0 0 100 0 0 0| 0 0 | 152B 346B| 0 0 | 9 13
0 0 100 0 0 0| 0 0 | 152B 346B| 0 0 | 8 8
0 0 100 0 0 0| 0 0 | 244B 346B| 0 0 | 9 8
0 1 99 0 0 0| 0 0 | 152B 346B| 0 0 | 8 8
0 0 100 0 0 0| 0 0 | 120B 346B| 0 0 | 8 8
0 1 99 0 0 0| 0 0 | 60B 346B| 0 0 | 9 12
0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 7 8
0 1 99 0 0 0| 0 0 | 60B 346B| 0 0 | 8 8
0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 6 8
0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 7 8
0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 8 13
0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 6 9
常用参数:
nginx $> dstat -c --top-cpu -d --top-bio --top-latency
nginx $>dstat -cdlmnpsy
八、Linux系统维护常用工具sysstat:
Linux系统维护常用工具sysstat:sysstat这个工具,可以说是linux &Unix; 以及Freebsd最常用的工具。它的主要用途就是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等
一、sar的最后两个参数一般是interval count
1、sar -u 1 5
输出CPU使用情况的统计信息,每秒输出一次,一共输出5次
[root@stage1-new9 sysstat-10.0.5]# sar -u 1 5
Linux 2.6.9-67.ELsmp (stage1-new9.intra99bill.com) 06/12/2012 _x86_64_ (8 CPU)
11:34:43 AM CPU %user %nice %system %iowait %steal %idle
11:34:44 AM all 0.00 0.00 0.00 0.00 0.00 100.00
11:34:45 AM all 0.00 0.00 0.12 0.00 0.00 99.88
11:34:46 AM all 0.00 0.00 0.00 0.00 0.00 100.00
11:34:47 AM all 0.00 0.00 0.12 0.00 0.00 99.88
11:34:48 AM all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.05 0.00 0.00 99.95
CPU all 表示统计信息为所有 CPU 的平均值。
%user 显示在用户级别(application)运行使用CPU 总时间的百分比。
%nice 显示在用户级别,用于nice操作,所占用CPU 总时间的百分比。
%system 在核心级别(kernel)运行所使用CPU 总时间的百分比。
%iowait 显示用于等待I/O操作占用CPU 总时间的百分比。
%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle 显示 CPU 空闲时间占用CPU 总时间的百分比。
Tips:
若 %iowait 的值过高,表示硬盘存在I/O瓶颈
若 %idle 的值高但系统响应慢时,有可能是CPU 等待分配内存,此时应加大内存容量
若 %idle 的值持续低于10,则系统的CPU 处理能力相对较低,表明系统中最需要解决的资源是CPU。
2、sar -b 1 5
显示I/O和传送速率的统计信息
17时09分07秒 tps rtps wtps bread/s bwrtn/s
17时09分08秒 3.12 3.12 0.00 25.00 0.00
17时09分09秒 89.58 6.25 83.33 141.67 733.33
17时09分10秒 42.71 9.38 33.33 141.67 600.00
17时09分11秒 2.11 2.11 0.00 16.84 0.00
17时09分12秒 1.04 0.00 1.04 0.00 175.00
Average: 27.77 4.18 23.59 65.14 302.30
tps 每秒钟物理设备的 I/O 传输总量
rtps 每秒钟从物理设备读入的数据总量
wtps 每秒钟向物理设备写入的数据总量
bread/s 每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s 每秒钟向物理设备写入的数据量,单位为 块/s
二、iostat
# iostat -x 1 10 //每隔1秒统计一次,共显示10次
[root@stage1-new9 sysstat-10.0.5]# iostat -x 1 10
Linux 2.6.9-67.ELsmp (stage1-new9.intra99bill.com) 06/12/2012 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.24 0.00 0.20 0.00 0.00 99.56
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.59 0.01 0.71 0.13 5.28 15.07 0.00 4.51 3.81 4.51 0.52 0.04
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 8.00 0.00 2.00 0.00 40.00 40.00 0.00 0.00 0.00 0.00 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait。 同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)
另外还可以参考:
svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。
队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 问题。