CPU/内存分析

一、概念理解

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

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

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

  • 申请内存区域
  • 申请绑定端口
  • 加载代码指令

线程:线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位

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

进程--资源分配的最小单位,线程--程序执行的最小单位

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

二、 cpu及内存监控

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

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

扫描二维码关注公众号,回复: 14888615 查看本文章

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

第三行 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 平台监控(环境搭建查看grafana+prometheus+node_exporter服务器性能监控搭建_shines_m的博客-CSDN博客

三、性能测试结果分析

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

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

猜你喜欢

转载自blog.csdn.net/qq_38571773/article/details/128233859