linux性能调试之vmstat分析
<p><span><strong>1.性能分析的目的</strong></span></p>
<p>
1)找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);<br>
2)提供性能优化的方案(升级硬件?改进系统系统结构?);<br>
3)达到合理的硬件和软件配置;<br>
4)使系统资源使用达到最大的平衡。(一般情况下系统良好运行的时候恰恰各项资源达到了一个平衡体,任何一项资源的过渡使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如cpu过渡使用会造成大量进程等待cpu资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存又会造成磁盘io增加和cpu开销增加)</p>
<p>
<span><strong>2.影响性能的因素</strong></span><br>
1)cpu(cpu的速度与性能很大一部分决定了系统整体的性能,是否使用smp)<br>
2)内存(物理内存不够时会使用交换内存,使用swap会带来磁盘i0和cpu的开销)<br>
3)硬盘(存储系统)<br>
a.raid技术使用(raid0, raid1, raid5, raid0+1)<br>
b.小文件读写瓶颈是磁盘的寻址(tps),大文件读写的性能瓶颈是带宽<br>
c.linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好<br>
4)网络带宽。</p>
<p>
<span><strong>3.性能分析的步骤</strong></span><br>
1)对资源的使用状况进行长期的监控和数据采集(nagios、cacti)<br>
2)使用常见的性能分析工具(vmstat、top、free、iostat等)<br>
3)经验积累<br>
a.应用程序设计的缺陷和数据库查询的滥用最有可能导致性能问题<br>
b.性能瓶颈可能是因为程序差/内存不足/磁盘瓶颈,但最终表现出的结果就是cpu耗尽,系统负载极高,响应迟缓,甚至暂时失去响应<br>
c.物理内存不够时会使用交换内存,使用swap会带来磁盘i0和cpu的开销<br>
d.可能造成cpu瓶颈的问题:频繁执perl,php,java程序生成动态web;数据库查询大量的where子句、order by/group by排序……<br>
e.可能造成内存瓶颈问题:高并发用户访问、系统进程多,java内存泄露……<br>
f.可能造成磁盘io瓶颈问题:生成cache文件,数据库频繁更新,或者查询大表……</p>
<p>
<span><strong>4.vmstat详细介绍</strong></span></p>
<p>
vmstat:用于监控、显示系统运行过程中的虚拟内存/cpu/磁盘状态。</p>
<p>
简单示例(时间间隔2s,监控2次):</p>
<p>
<img title="linux性能调试之vmstat分析" alt="linux性能调试之vmstat分析" src="https://zhuji.jb51.net/uploads/img/202305/8dd75c67b6abb60a03e4bd0c49c4436d.jpg"></p>
<p>
重要字段解释:</p>
<p>
r 表示运行队列(等待运行的进程数)</p>
<p>
b 表示阻塞的进程</p>
<p>
swpd 虚拟内存已使用的大小</p>
<p>
free 空闲的物理内存的大小,我的机器内存总共8g,剩余3415m。</p>
<p>
in 每秒cpu的中断次数,包括时间中断</p>
<p>
cs 每秒上下文切换次数,比如系统调用,线程的切换。上下文切换次数过多表示你的cpu大部分浪费在上下文切换,导致cpu干正经事的时间少了,cpu没有充分利用,是不可取的。</p>
<p>
us 用户cpu时间。</p>
<p>
sy 系统cpu时间,如果太高,表示系统调用时间长,例如是io操作频繁。</p>
<p>
id 空闲 cpu时间,一般来说,id + us + sy = 100。</p>
<p>
wt 等待io cpu时间。</p>
<p>
<strong>典型的问题现象</strong>:</p>
<p>
1.cpu问题<br>
a.procs.r持续有值,且大于系统cpu数量,则认为系统不足以支撑当前的负载(因为一直有进程在等待运行),可能是软件实现问题或者需要升级硬件系统<br>
b.cpu.id持续为0,表示cpu持续忙,需要根据cpu.sy,cpu.us继续查找原因<br>
c.cpu.sy,cpu.us持续高,且cpu.sy大于cpu.us表示系统频繁在内核态执行,可能存在频繁的或较多的系统调用或者io访问<br>
2.内存问题<br>
a.memory.swpd数值持续有值,说明系统内存不足且使用了虚拟内存,需要加大内存。</p>
<p>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
<p>
原文链接:http://www.cnblogs.com/llc-blog/p/8638431.html</p>
頁:
[1]