性能指标:
高并发和响应快 对应着性能优化的两个核心指标 吞吐 和 延迟。这两个指标是从应用负载的视角来考察性能,直接影响产品终端用户体验。跟他们对应的是从系统资源的视角触发的指标,比如资源使用率、饱和度等
随着应用负载的增加,系统资源使用也会升高,甚至达到极限。而性能问题的本质,就是系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。
性能分析:找出应用或者系统的瓶颈,并设法避免或者缓解它们,从而高效地利用系统资源处理更多请求
关于性能领域大师布伦丹·格雷格他的Linux性能工具图谱:
怎么理解平均负载?
当系统变慢的时候,我们经常使用top或者uptime的时候
其中参数为 当前时间,系统运行时间,正在登陆的用户数,还有1m,5m,15m的平均负载
平均负载:是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系。
可运行状态的进程:是指正在使用CPU或者等待CPU的进程,也就是ps命令可以看到的处于R(running)状态的进程
不可中断状态的进程:是指正处于内核态关键流程中的进程,并且这些流程不可打断,比如常见的I/O响应,也就是我们PS命令中看到的D(Disk sleep)状态的进程
S休眠状态,Z僵尸进程
比如:当一个进程向磁盘读写数据时为了保证数据一致性,在得到磁盘恢复前,它是不能被其他进程中断打断的,这个进程处于不可中断进程。
不可中断状态实际上是系统对进程和硬件设备的一种保护机制
当CPU平均负载为2时, 1>只有2个CPU的系统,意味着CPU刚好被完全占用 2>在4个CPU的系统上,意味着CPU有50%空闲3> 1个CPU的系统上,意味着一半的进程竞争不到CPU
平均负载多少为合理:
首先要知道系统有几个CPU,可以通过top或者从文件/proc/cpuinfo中读取,其中model name
一般当平均负载高于CPU数量70%的时候,就应该排查负载高的问题,一旦负载过高可能导致进程响应变慢,进而影响服务的正常功能
平均负载与CPU使用率
平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数,所以不仅包括了正在使用CPU的进程,还包括等待CPU和等待I/O的进程。而CPU使用率是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。
比如: CPU密集型服务,使用大量CPU会导致平均负载升高,此时两者一致
I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高。
大量等待CPU的进程调度也会导致平均负载升高,此时CPU使用率也会比较高
平均负载案例分析
场景一:CPU密集型进程
在第一个终端运行stress命令,模拟CPU使用率100%的场景