日期:2014-05-16  浏览次数:20713 次

寻找Linux单机负载瓶颈

服务器性能上不去,是哪里出了问题?IO还是CPU?只有找到瓶颈点,才能对症下药;?
如何寻找Linux单机负载瓶颈,遵循的原则是不要推测,我们要通过测量的数据说话;

负载分两类:?
1.CPU负载;?
2.IO负载;

排查流程

1.查看平均负载(top/uptime命令)?
2.确认CPU、IO有无瓶颈;(使用 sar vmstat)?
3.CPU负载过高时寻找流程:?
4.IO负载过高时寻找流程;

查看平均负载

先通过top命令查看服务器是否出现负载过重的状况,之后,再具体使用工具来分析出是CPU负载过高还是IO负载过高;?
比如,使用sar工具查看CPU使用率和IO等待率(sar的具体使用教程参考大CC的这篇文章:?
http://blog.me115.com/2013/12/468?
top的结果:?
load average:0.7, 0.66,0.59?
平均负载分别表明从左到右1分钟、5分钟、15分钟内,单位时间内处于等待状态的任务数;?
(等待 的意思 表明在等待cpu、或者等待IO)

CPU负载过高时的寻找流程

使用top、sar确认目标程序;?
再通过ps查看进程状态和CPU使用时间等;?
进一步寻找:通过strace 或 oprofile命令;

IO负载过高的寻找流程

IO负载过高,多半是程序发出的IO请求过多导致负载过高,或是发生页面交互导致频繁访问磁盘;?
应通过sar或vmstat确认交换区状态,以找出原因;?
如果是发生页面交互的情况,通过以下步骤调查:?
1.使用ps工具确认是否有进程消耗了大量内存;?
2.如果由于程序故障造成内存消息过大,应改进程序;?
3.内存不足则增加内存;

如果没有交换发生,而且磁盘IO频繁,可能是用于缓存的内存不足;?
1.考虑扩大缓存,增加内存;?