1.如何判断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分钟内的运行队列的大小。这个值越大表明系统负荷越大。用uptime得到的3个负载值除以逻辑CPU数,如果3个结果值均>1,则表示CPU过载。
使用top或者uptime查看
查看上下文切换
每个CPU(或多核CPU中每个核心)在同一时间只能执行一个线程,Linux采用抢占式调度。即为每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的执行状态,并恢复要执行的线程状态,这个过程称之为上下文切换。对于java应用,典型的是在进行文件IO操作,网络IO操作,锁等待或线程sleep时,当前线程会进入阻塞或者休眠