CPU/内存分析

一、概念理解

程序运作原理:一个请求发送到服务器,首先经过网卡,然后通知cpu有待处理任务,CPU去运行操作系统指令,根据请求的端口号,找到对应的应用程序代码,安排线程去处理;由于程序代码在磁盘中执行速度太慢,会开辟一块内存空间来处理任务-即网络缓冲区

 

 

 

 

CPU :执行代码指令,对数据进行处理

进程:操作系统层面 管理程序运行的一种单位

- 申请内存区域
- 申请绑定端口
- 加载代码指令
线程:线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位

- 同一个进程内的多个线程,共享内存使用
- 共享一个端口
- 可以作为操作系统层面,单独调用资源(操作系统会把指令和数据,以线程为单位,分派给CPU去处理执行)
进程--资源分配的最小单位,线程--程序执行的最小单位

通俗的比喻:网卡相当于火车站的进/出站口;CPU相当于火车的车轨,CPU的核数相当于多条轨道;操作系统就是火车站的调度室,负责调度资源;端口号则相当于火车的班次号;进程则是一辆火车,负责运行,运行时需要占用CPU轨道资源,不运行则不占用资源;线程则是火车的车厢,承载不同的人

二、 cpu及内存监控

1. 使用top命令查看实时的资源占用情况

 

第一行 系统运行信息:当前时间、系统运行了多久、登录用户有多少、负载信息-1分钟/5分钟/15分钟(使用特定算法,CPU 核数 * 3~5 为超高负载)

第二行 任务信息:总共多少进程、正在运行、休眠数、停止数、假死数

第三行 CPU信息:

21.6 us:表示用户模式下CPU占用比为21.6%
8.3 sy:表示系统模式下CPU占用比为8.3%0.0 ni:表示改变过优先级的进程的CPU占用比为0.0%
69.9 id:表示空闲状态的CPU占用比为99.8%
0.0 wa:表示因为I/O等待造成的CPU占用比为0.0%
0.0 hi:表示硬中断的CPU占用比
0.0 si:表示软中断的CPU的占用比。
0.0 st:表示CPU等待虚拟机调度的时间占比,这个指标一般在虚拟机中才会有,在物理机中该值一般维持为0。

第四行 内存的使用信息:

total表示物理内存的总量
free表示物理内存的空闲大小
used表示已使用的物理内存的大小
buff/cache表示用于缓存的物理内存的大小
第五行 虚拟内存/交换内存:本质 是在 硬盘上面开辟一块空间当成 内存来用

 

第五行 虚拟内存/交换内存:本质 是在 硬盘上面开辟一块空间当成 内存来用

2.使用free命令查看内存使用

 

 

 

参数含义:

total:总共可以使用的内存,单位K
used: 已经使用的内存 ,java堆内存
free:空闲内存
shared:共享区域,多进程共享一块内存, java堆外内存
buffer/cache:缓冲/缓存内存,内存不够用时,这块区域会被释放(例如:写文件时,内存够用,写入到buffer,内存不够用时,就赶紧落到磁盘)
available:可用内存大小
虚拟内存:当物理内存不够用时,操作系统设计人员想了个办法,大部分程序进程是没有在运行的,操作系统把内存里的部分数据,临时存放到磁盘

 

3. grafana 平台监控

三、性能测试结果分析
如果吞吐量达到了瓶颈,而CPU资源占用不高,可能是性能测试场景设计问题:压力不够导致 -- 逐步增加并发数测试

增加了并发量,而资源并没有随之变高,可能程序或者其他配置有问题
CPU占用不增加,需要考虑程序代码或者操作系统配置问题,例如涉及Jvm程序 多线程机制

 

posted @ 2023-03-02 23:29  我是小菜鸡丫丫  阅读(148)  评论(0编辑  收藏  举报