一、概念理解
程序运作原理:一个请求发送到服务器,首先经过网卡,然后通知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程序 多线程机制
标签:分析,操作系统,占用,线程,内存,进程,CPU From: https://www.cnblogs.com/kxtomato/p/17174047.html