- 浏览: 2538706 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
十三个强大的Linux性能监测工具 http://www.bitscn.com/os/linux/201007/188702.html
一、系统整体性能检测工具:uptime
[root@WebServer ~]# uptime (同w命令输出的第一行信息)
09:40:52 up 5 days, 57 min, 1 user, load average: 0.00, 0.00, 0.00
uptime命令用于查看服务器运行了多长时间以及有多少个用户登录,快速获知服务器运行的负载情况。
load average,显示了最近1-,5-,15分钟的负荷情况。
它的值代表等待CPU处理的进程数,如果CPU没有时间处理这些进程,load average值会升高;反之则会降低。
在CPU数量不同的情况下,值有所不同。
二、CPU监测:mpstat (请参考MAN手册)
mpstat 1 111 [1秒刷新,111次]
语法:mpstat [ options... ] [ <interval> [ <count> ] ]
[root@WebServer ~]# mpstat 1
Linux 2.6.9-89.ELsmp (WebServer) 08/18/09
10:08:25 CPU %user %nice %system %iowait %irq %soft %idle intr/s
10:08:26 all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1005.00
10:08:27 all 0.00 0.00 0.00 0.12 0.00 0.00 99.88 1031.00
10:08:28 all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1009.00
10:08:29 all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1030.00
10:08:30 all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1006.00
1.CPU (处理器编号,all表示所有处理器的平均数值)
Processor number. The keyword all indicates that statistics are calculated as averages among all processors.
2.%user (用户态的CPU利用率百分比)
Show the percentage of CPU utilization that occurred while executing at the user level (application).
3.%nice (用户态的优先级别CPU的利用率百分比)
Show the percentage of CPU utilization that occurred while executing at the user level with nice priority.
4.%system (内核态的CPU利用率百分比)
Show the percentage of CPU utilization that occurred while executing at the system level (kernel). Note that
this does not include the time spent servicing interrupts or softirqs.
5.%iowait (在interval间段内io的等待百分比,interval 为采样频率,如本文的1为每一秒钟采样一次)
Show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.
6.%irq (在interval间段内,CPU的中断百分比)
Show the percentage of time spent by the CPU or CPUs to service interrupts.
7.%soft (在interval间段内,CPU的软中断百分比)
Show the percentage of time spent by the CPU or CPUs to service softirqs. A softirq (software interrupt) is
one of up to 32 enumerated software interrupts which can run on multiple CPUs at once.
8.%idle (在interval间段内,CPU的闲置百分比,不包括I/O请求的等待)
Show the percentage of time that the CPU or CPUs were idle and the system did not have an outstanding
disk I/O request.
9.intr/s (在interval间段内所有的CPU每秒中断数)
Show the total number of interrupts received per second by the CPU or CPUs.
三、内存监测:vmstat (请参考MAN手册)
vmstat 5 10 cpu总的性能
语法:vmstat [-V] [-n] [delay [count]]
[root@WebServer ~]# vmstat 1
procs ------- ----memory---------- ---swap-- -----io------system-- - ---cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 29377720 76724 3249428 0 0 0 1 4 8 0 0 100 0
0 0 0 29377720 76724 3249428 0 0 0 0 1031 76 0 0 100 0
0 0 0 29377720 76724 3249428 0 0 0 0 1010 34 0 0 100 0
0 0 0 29377720 76724 3249428 0 0 0 0 1028 78 0 0 100 0
0 0 0 29377720 76724 3249428 0 0 0 0 1025 32 0 0 100 0
0 0 0 29377720 76724 3249428 0 0 0 36 1049 82 0 0 100 0
0 0 0 29377720 76724 3249428 0 0 0 0 1025 28 0 0 100 0
0 0 0 29377720 76724 3249428 0 0 0 0 1028 78 0 0 100 0
0 0 0 29377720 76724 3249428 0 0 0 0 1006 36 0 0 100 0
Procs:
r: The number of processes waiting for run time. (在等待队列里的进程数)
b: The number of processes in uninterruptible sleep. (被阻塞的进程数)
Memory :
swpd: the amount of virtual memory used. (交换分区的使用总数)
free: the amount of idle memory. (空闲的物理内存总数 )
buff: the amount of memory used as buffers. (作为buffer cache的内存,对块设备的读写进行缓冲)
cache: the amount of memory used as cache. (作为page cache的内存,文件系统的cache)
inact: the amount of inactive memory. (-a option) (不活动的内存数)
active: the amount of active memory. (-a option) (活动的内存数)
Swap :
si: Amount of memory swapped in from disk (/s).(每秒从SWAP交换分区换入到内存的数量)
so: Amount of memory swapped to disk (/s).(每秒从内存换出到SWAP交换分区的数量)
IO :
bi: Blocks received from a block device (blocks/s).(每秒从块设备读入数据的总量-->读磁盘)
bo: Blocks sent to a block device (blocks/s). (每秒块设备写入数据的总量-->写磁盘)
System:
in: The number of interrupts per second, including the clock. (每秒产生的中断次数,包括时钟中断)
cs: The number of context switches per second. (每秒产生的上下文切换次数)
CPU :
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time) (用户进程消耗的CPU时间百分比)
sy: Time spent running kernel code. (system time) (内核进程消耗的CPU时间百分比)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time. (IO等待消耗的CPU时间百分比)
wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero. (CPU处于空闲状态时间百分比)
四、网络监测: iostat 吞吐量
# iostat -x 1
avg-cpu: %user %nice %system %iowait %steal %idle
24.13 0.00 8.22 2.50 0.00 65.15
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 17.51 107.98 9.98 14.52 250.06 980.07 50.20 3.23 131.70 2.53 6.19
参数 -d 表示,显示设备(磁盘)使用状态;
-k某些使用block为单位的列强制使用Kilobytes为单位;
1 10表示,数据显示每隔1秒刷新一次,共显示10次。
tin 显示了系统为所有 tty 读取的字符总数。
tout 显示了系统为所有 tty 写入的字符总数。
% user 显示了在用户级(应用程序)执行时产生的 CPU 使用率百分比。
% sys 显示了在系统级(内核)执行时产生的 CPU 使用率百分比。
% idle
显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。
% iowait 显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。
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压力高)
另外 await 的参数也要多和 svctm 来参考.差的过高就一定有 IO 的问题.
avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小.如果数据拿的大,才IO 的数据会高.也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是讲,读定速度是这个来决定的.
Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。
1. 基本使用
$iostat -d -k 1 10
参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。
$iostat -d -k 1 10
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 39.29 21.14 1.44 441339807 29990031
sda1 0.00 0.00 0.00 1623 523
sda2 1.32 1.43 4.54 29834273 94827104
sda3 6.30 0.85 24.95 17816289 520725244
sda5 0.85 0.46 3.40 9543503 70970116
sda6 0.00 0.00 0.00 550 236
sda7 0.00 0.00 0.00 406 0
sda8 0.00 0.00 0.00 406 0
sda9 0.00 0.00 0.00 406 0
sda10 60.68 18.35 71.43 383002263 1490928140
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 327.55 5159.18 102.04 5056 100 sda1 0.00 0.00 0.00 0 0
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;
这些单位都为Kilobytes。
上面的例子中,我们可以看到磁盘sda以及它的各个分区的统计数据,当时统计的磁盘总TPS是39.29,下面是各个分区的TPS。(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)
2. -x 参数
使用-x参数我们可以获得更多统计信息。
iostat -d -x -k 1 10
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.80 31.49 42.51 2.92 21.26 1.46 1.16 0.03 0.79 2.62 10.28
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 2.00 20.00 381.00 7.00 12320.00 216.00 6160.00 108.00 32.31 1.75 4.50 2.17 84.20
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒读取的扇区数;wsec/:每秒写入的扇区数。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second;
await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了
(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
3. -c 参数
iostat还可以用来获取cpu部分状态值:
iostat -c 1 10
avg-cpu: %user %nice %sys %iowait %idle 1.98 0.00 0.35 11.45 86.22
avg-cpu: %user %nice %sys %iowait %idle 1.62 0.00 0.25 34.46 63.67
4. 常见用法
$iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态
5. 实例分析
$iostat -d -k 1 |grep sda10
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda10 60.72 18.95 71.53 395637647 1493241908
sda10 299.02 4266.67 129.41 4352 132
sda10 483.84 4589.90 4117.17 4544 4076
sda10 218.00 3360.00 100.00 3360 100
sda10 546.00 8784.00 124.00 8784 124
sda10 827.00 13232.00 136.00 13232 136
上面看到,磁盘每秒传输次数平均约400;每秒磁盘读取约5MB,写入约1MB。
iostat -d -x -k 1
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29
sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25
sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24
可以看到磁盘的平均响应时间<5ms,磁盘使用率>80。磁盘响应正常,但是已经很繁忙了。
五、网络监测: lsof (请参考MAN手册)
由于公司的程序要在一个端口监听,所以要监测该端口的状态信息。这里用22端口讲解
[root@WebServer ~]# lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 11664 root 3u IPv6 109820 TCP 192.168.0.157:22->192.168.0.99:1174 (ESTABLISHED)
sshd 24927 root 3u IPv6 62643 TCP *:22 (LISTEN)
发表评论
-
设置sudo为不需要密码
2015-04-17 09:04 10510有时候我们只需要执 ... -
haproxy 安装配置和负载实例
2015-03-27 11:49 11531一、环境说明实验环境 OS CentOS5.4 192.1 ... -
/dev/mapper/VolGroup00-LogVol00 100% 如何处理
2015-03-03 10:51 8209服务器磁盘跑满了, 命令查看 如下 [root@lo ... -
Tsar开源:淘宝内部大量使用的系统监控工具
2014-08-07 09:51 971Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告 ... -
Linux运维常用命令 (转载)
2013-01-31 10:23 25241 删除0字节文件find-type f - ... -
linux恢复 rm -rf 删除的文件:extundelete
2013-01-24 15:47 8910http://blog.csdn.net/pang6013 ... -
网站排障分析常用的命令
2013-01-21 18:17 1397------------------------------- ... -
迁移vmware服务器后Device eth0 does not seem to be present
2013-01-21 10:58 2249用VMware 安装 linux 6.0 ... -
LoadRunner如何监控Linux系统资源 : rpc.rstatd
2012-12-17 14:49 10294一 简述:LoadRunner监控Linux资源时弹出如下错误 ... -
僵尸Z进程和D进程
2012-12-10 16:47 13146-------------- 1 关于ZOMBIE进 ... -
Unix操作系统硬链接与符号链接的区别
2012-12-10 16:08 2021Unix操作系统有很多值得 ... -
nagios配置参数详解
2012-12-04 14:12 9440# Nagios return codes#定 ... -
nagios自定义监控nginx php和ip_conn
2012-12-03 17:57 3169自定义ip_conn.sh :http://zhume ... -
【汇总】shell show收藏
2012-11-29 14:03 1268================== shell从文本取对应的 ... -
Kickstart+PXE+DHCP+TFTP+NFS自动安装Centos5
2012-11-29 11:34 1602http://5ydycm.blog.51cto.com/11 ... -
haproxy+keepalived高可用负载均衡(七层)
2012-11-29 10:36 4006HAproxy是一款基于TCP( ... -
LVS+Keepalived
2012-11-29 10:10 1734http://www.linuxvirtualserver.o ... -
haproxy & LVS*(keepalived和heartbeat) & ng的比较
2012-11-29 10:04 7589http://network.51cto.com/art/ ... -
运维架构师-并不遥远的彼岸
2012-11-28 17:45 1736在百度里搜索运维架构师,你会发现招聘的职位还不少并且月薪、年 ... -
puppet模块汇总
2012-11-21 17:08 3028在磁盘上,一个模块对应一个特殊的目录结构: MODULE_ ...
相关推荐
最后,`sysstat/sar` 是一个综合的系统性能分析工具套件,包含了多个子命令,如mpstat(多处理器状态报告)、iostat和vmstat。sar可以定期收集系统性能数据,并在后期进行分析,生成详细的报告,为性能调优提供依据...
除了基本的命令行选项,mpstat 还可以与脚本和自动化工具集成,比如监控系统日志、触发警报或者生成性能报告。通过将 mpstat 的输出重定向到文件,可以记录历史性能数据,这对于长期性能分析和故障排查非常有价值。 ...
`mpstat`可以显示每个CPU核心的负载,而`iostat`则用于分析磁盘I/O性能。 2. **日志分析**:`dmesg`用于查看内核消息,而`less`或`cat`可用于查看特定的日志文件。对于复杂日志分析,可以使用`grep`、`awk`和`sed`...
9. **sysstat**:一套包含多种监控工具(如iostat、mpstat、sar)的软件包。 10. **atop**:实时和历史系统监控工具,包括资源利用率、进程、网络、I/O等信息。 11. **dstat**:多功能监控工具,可同时替代多个命令...
12. **dstat**:dstat可以同时替代多个系统监控工具,如vmstat、iostat、ifstat等,提供全面的系统资源监控。 13. **strace**:strace用于跟踪进程的系统调用和信号,帮助诊断进程行为问题。 14. **lsof**:lsof列...
在系统性能分析工具中,学习使用top、mpstat、vmstat、iostat等命令是基础。例如,`top`命令可以实时动态地显示系统进程的状态和资源使用情况,包括CPU使用率、内存使用率等;`mpstat`用于输出CPU的各种统计信息;`...
这些工具可能包括但不限于top、vmstat、iostat、mpstat、free、dmesg等,它们可以帮助监控CPU利用率、内存使用、磁盘I/O和网络活动,提供实时性能数据。 最后,通过具体的性能分析及优化案例,可以深入理解如何将...
在Linux环境中,我们常用的一些工具包括vmstat和iostat来监控和分析系统性能。 vmstat是“Virtual Memory Statistics”的缩写,它可以提供关于进程、内存、交换空间、磁盘I/O以及CPU活动的信息。例如,`r`表示正在...
1. **监控工具**:书中会介绍一系列用于系统监控的命令行工具,如top、vmstat、iostat、mpstat、dstat等,它们可以帮助我们实时查看CPU、内存、磁盘I/O、网络等资源的使用情况。 2. **进程管理**:理解进程的工作...
6. **日志分析**:监控系统日志文件,如`/var/log/messages`,寻找可能导致性能问题的错误或警告信息。 7. **自动化报告**:脚本可能会有定时运行机制(如cron),并将收集到的数据输出到日志文件或发送邮件报告,...
在Linux系统中,性能监控是确保系统稳定运行和优化资源使用的关键环节。本文将详细介绍几种常用的Linux性能监控工具,帮助你更好地理解系统状态并解决潜在问题。 1. **top** `top`命令是最基本的实时性能监控工具...
例如,当系统响应变慢时,可以先用top查看整体资源占用,然后用iostat和vmstat分析I/O和内存是否存在问题,最后可能还需要借助strace等工具跟踪特定进程的行为,找出性能瓶颈。记住,每一个命令都是解决问题的有力...
7. KDE System Guard:一个图形化的监控工具,适合直观地监控系统资源使用情况。 8. free:报告系统的空闲内存、已用内存、交换空间等信息。 9. traffic-vis:网络流量监控工具(仅限于SUSE系统),用于监控网络...
2. iostat:此工具主要用于监控系统的I/O性能,它可以显示每个磁盘设备的读写速度、等待时间等关键指标,帮助我们快速定位磁盘I/O问题。在高负载情况下,iostat能够帮助我们识别哪些设备可能成为性能瓶颈。 3. ...
性能分析过程中会用到多个工具,包括但不限于top、sar、vmstat、mpstat、iostat、netstat等系统级别的工具来监控操作系统表现;jps、jstack、jmap、jstat等用于监控JVM的表现,以及GC(垃圾回收)相关的工具;还有...
在Linux操作系统中,监控系统性能是管理员日常维护工作的重要环节,其中,对I/O(Input/Output)状态的监控尤为关键。sysstat是一款强大的系统活动分析工具集,而iostat则是sysstat中的核心组件,用于实时监测和分析...