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 显示内存使用情况