linux性能调试之vmstat分析

吾爱主题 阅读:155 2024-04-05 13:53:24 评论:0

1.性能分析的目的

1)找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);
2)提供性能优化的方案(升级硬件?改进系统系统结构?);
3)达到合理的硬件和软件配置;
4)使系统资源使用达到最大的平衡。(一般情况下系统良好运行的时候恰恰各项资源达到了一个平衡体,任何一项资源的过渡使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如cpu过渡使用会造成大量进程等待cpu资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存又会造成磁盘io增加和cpu开销增加)

2.影响性能的因素
1)cpu(cpu的速度与性能很大一部分决定了系统整体的性能,是否使用smp)
2)内存(物理内存不够时会使用交换内存,使用swap会带来磁盘i0和cpu的开销)
3)硬盘(存储系统)
a.raid技术使用(raid0, raid1, raid5, raid0+1)
b.小文件读写瓶颈是磁盘的寻址(tps),大文件读写的性能瓶颈是带宽
c.linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好
4)网络带宽。

3.性能分析的步骤
1)对资源的使用状况进行长期的监控和数据采集(nagios、cacti)
2)使用常见的性能分析工具(vmstat、top、free、iostat等)
3)经验积累
a.应用程序设计的缺陷和数据库查询的滥用最有可能导致性能问题
b.性能瓶颈可能是因为程序差/内存不足/磁盘瓶颈,但最终表现出的结果就是cpu耗尽,系统负载极高,响应迟缓,甚至暂时失去响应
c.物理内存不够时会使用交换内存,使用swap会带来磁盘i0和cpu的开销
d.可能造成cpu瓶颈的问题:频繁执perl,php,java程序生成动态web;数据库查询大量的where子句、order by/group by排序……
e.可能造成内存瓶颈问题:高并发用户访问、系统进程多,java内存泄露……
f.可能造成磁盘io瓶颈问题:生成cache文件,数据库频繁更新,或者查询大表……

4.vmstat详细介绍

vmstat:用于监控、显示系统运行过程中的虚拟内存/cpu/磁盘状态。

简单示例(时间间隔2s,监控2次):

重要字段解释:

r 表示运行队列(等待运行的进程数)

b 表示阻塞的进程

swpd 虚拟内存已使用的大小

free   空闲的物理内存的大小,我的机器内存总共8g,剩余3415m。

in 每秒cpu的中断次数,包括时间中断

cs 每秒上下文切换次数,比如系统调用,线程的切换。上下文切换次数过多表示你的cpu大部分浪费在上下文切换,导致cpu干正经事的时间少了,cpu没有充分利用,是不可取的。

us 用户cpu时间。

sy 系统cpu时间,如果太高,表示系统调用时间长,例如是io操作频繁。

id  空闲 cpu时间,一般来说,id + us + sy = 100。

wt 等待io cpu时间。

典型的问题现象

1.cpu问题
a.procs.r持续有值,且大于系统cpu数量,则认为系统不足以支撑当前的负载(因为一直有进程在等待运行),可能是软件实现问题或者需要升级硬件系统
b.cpu.id持续为0,表示cpu持续忙,需要根据cpu.sy,cpu.us继续查找原因
c.cpu.sy,cpu.us持续高,且cpu.sy大于cpu.us表示系统频繁在内核态执行,可能存在频繁的或较多的系统调用或者io访问
2.内存问题
a.memory.swpd数值持续有值,说明系统内存不足且使用了虚拟内存,需要加大内存。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/llc-blog/p/8638431.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容