定位系统 瓶颈办法总结

1.查看平均负载

uptime(处于等待任务数)

2.确认cpu,io有无瓶颈

sar或者vmstat察看cpu使用率和io等待率随着时间的等待情况

cpu负载过高时,可以通过以下流程查找原因

1.确认是程序原因,还是系统原因。用top或者sar确认

2.通过ps察看可见进程状态和cpu使用时间,确认有问题的进程

3.确定进程之后,如果想进一步查找原因,可以通过strace跟踪,或者oprofile进行查找。

一般来说,cpu负载通常由一下两者确定

1.磁盘和内存容量有没有成为瓶颈

2.程序失控,消耗过多的cpu

第一种情况,确定系统的吞吐量有问题,可以采取增加服务器,改善程序和算法的方式,第二种情况要避免程序失控。

io负载过高,多半是程序发出的io请求过多导致负载过高,或者发生页面交换导致频繁访问磁盘,可以通过sar或者vmstat确定交换区状态。

如果是页面交换的情况:

1.ps确认是否有进程消耗了大量内存

2.如果内存不足,应该增加内存

如果没有交换发生,而且磁盘io频繁的情况下,可能是用于缓存的内存不足。

linux只要有空闲内存,就会全部用于缓存。当进程请求分配内存时,如果缓存导致内存没有空闲,就先删除旧的缓存,再为进程分配内存。

操作系统刚启动时,不要把服务器投入生产环境,由于没有使用缓存,所有请求都要访问磁盘,操作系统启动之后,经常需要把数据库文件需要cat一遍。

sar -W 1 3 显示页面换入换出情况

sar -u 1 3 显示cpu使用率

sar -r 1 3 显示内存使用情况

你可能感兴趣的:(服务器,内存,瓶颈)