分析CPU,内存,磁盘瓶颈
CPU瓶颈1) 查看CPU利用率。建议CPU指标如下
a) User Time:65%~70%
b) System Time:30%~35%
c) Idle:0%~5%
如果us,sy高于这个指标可以判断CPU有瓶颈
使用top查看
查看运行队列
每个CPU都会维持一个运行队列,理想情况下,调度器会不断让队列中的进程运行。进程不是处在sleep状态就是run able状态。如果CPU过载,就会出现调度器跟不上系统的要求,导致可运行的进程会填满队列。队列愈大,程序执行时间就愈长。“load”用来表示运行队列,用top 命令我们可以看到CPU一分钟,5分钟和15分钟内的运行队列的大小。这个值越大表明系统负荷越大。超过 1.00,那么说明CPU已经超出负荷,交通严重的拥堵。
使用top或者uptime查看
查看上下文切换
每个CPU(或多核CPU中每个核心)在同一时间只能执行一个线程,Linux采用抢占式调度。即为每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的执行状态,并恢复要执行的线程状态,这个过程称之为上下文切换。对于java应用,典型的是在进行文件IO操作,网络IO操作,锁等待或线程sleep时,当前线程会进入阻塞或者休眠状态,从而触发上下文切换,上下文切换过多会造成内核占用过多的CPU使用,使得应用的响应速度下降。
使用vmstat查看cs
结论
检查system的运行队列,以及确定不要超出每个处理器3个可运行状态线程的限制.
确定CPU 利用率中user/system比例维持在70/30
当CPU 开销更多的时间在system mode,那就说明已经超负荷并且应该尝试重新调度优先级
当I/O 处理得到增长,CPU 范畴的应用处理将受到影响
ps:对于JAVA应用,CPU瓶颈可以通过jprofiler监控分析
内存瓶颈
1.查看利用率(free)
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
2.查看页交换,swap交换(po,pi,so,si),磁盘IO(vmstat)
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小
page in :分页(Page)从磁盘重新回到内存的过程被称作Page-In
page out : 分页(Page)写入磁盘的过程被称作Page-Out
另外在进行页交换的时候,会产生磁盘IO,还需注意bi,bo
Bo 磁盘块页面从内存到文件或交换设备的总额
Bi 磁盘块页面从文件或交换设备到内存的总额
3.page fault(pidstat -r,sar -B )
minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
其中sar -B中fault/s表示每秒钟minflt,majflt的和。
结论
监控虚拟内存性能由以下几个部分组成:
1.当系统中出现较少的页错误,获得最好的响应时间,是因为memory caches(译注:内存高速缓存)比disk caches更快(译注:磁盘高速缓存).
2.较少的空闲内存,是件好事情,那意味着缓存的使用更有效率.除非在不断的写入swap device和disk.
3.如果系统不断报告,swap device总是繁忙中,那就意味着内存已经不足,需要升级了.
zee:
如果用做缓冲区(buff)和快速缓存(Cache)的物理内存不断地增加,而空闲的物理内存(free)不断地减少,证明系统中运行的进程正在不断地消耗物理内存。
已经使用的虚拟内存(swpd)不断增加,而且存在着大量的页面交换(si和so),证明物理内存已经不能满足系统需求,系统必须把物理内存的页面交换到磁盘中去。
由此可以得到这样的结论:该主机上的物理内存已经不能满足系统运行的需要,内存已成为该系统性能的一个瓶颈。
ps:对于java程序,内存瓶颈可以通过heap dump后使用mat分析

浙公网安备 33010602011771号