1、系统监控
可以使用top命令进行监控或者使用监控平台;在压测接口时,个人建议2种手段都要使用;
首先:
top命令一般用于监控进程、线程、系统级性能,可以监控系统级CPU、内存、以及IO,其中监控IO需要结合iostat、iotop命令区进一步分析,当top命令监控发现iowait有值时
需要进一步分析IO,此时需要监控IO速率以及IO使用率;那么就会有一些小伙伴会疑惑为何要监控IO速率和IO使用率?
当磁盘IO出现问题时很有可能出现这么一种现象,IO使用率很高而IO速率很低,此时几乎可以判断磁盘IO存在异常,因此单纯的只观测IO使用率并不能说明磁盘IO使用率有问题,也有可能是磁盘损坏
iostat观测io使用率,iotop观测i哦速率,一般都需要使用root用户进行观测
io使用率偏高引起的系统级性能现象,使用top进行观测,可以发现io使用率偏高可以引起CPU使用率偏高
内存:
内存同样可以使用top来进行监控,内存异常,在持续监控中如果内存在缓慢的增加,则需要警惕是否存在内存泄漏,
如果观测内存溢出?
使用top命令进行持续观测,如果发现buff/cache占用的内存持续减少,内存使用率持续升高,则可以判断出内存已经存在异常这个时候需要做进步一分析
当内存使用率满载,会引起哪些现象?
首先是CPU使用率飙升,其次是IO使用率飙升
因为内存溢出,这个时候由于内存的策略,会不断地将内存中的数据写入磁盘或者不断地从磁盘读取大量的数据,因此会导致IO使用率的升高,进而引起CPU使用率的升高
CPU:
CPU使用率比较高会有很多现象,现在一般都是多核心CPU,有些情况下,会出现某几个CPU核心使用率几乎满载,而其他CPU核心几乎没有使用
因此这个时候就需要查询是否是进行绑定CPU执行
其次如果CPU使用率比较高需要观测,是us态还是sys态亦或是si、hi、st、wait等状态
us表示用户态占用的CPU使用率,一般就是进程占用的
sys表示系统态,如果sys比较高则可能是系统配置等原因导致
si软中断引起的CPU使用率比较高,
st表示资源争用占用的CPU,一般不会很高,如果出现很高的时候则需要联系运维
其次在CPU使用率很高的时候需要分析内存和IO使用率是否也很高,CPU使用率偏高时因为内存和IO引起的升高
如果只有CPU比较高,则需要通过top命令查看时哪个进程占用CPU比较高,进而分析该进程下的线程是否存在异常,如果出现某一线程出现CPU使用率100%(只会是占用某个核心)
则需要分析一下是否存在死锁等现象
下一篇我们来分析JVM的调优以及JVM的原理