性能测试三十:监控之CPU、内存、磁盘,命令监控

性能监控是性能测试过程中非常重要的一个环节,当在压测过程中出现性能瓶颈时,需要综合详细的监控数据对问题进行分析。整个系统架构中的每一个环节都需要做监控(压力机、网络、各中间件、各服务器硬件资源等)。性能监控做好了,就能帮助你快速的定位问题,找到系统的性能瓶颈。

操作系统级别监控

cpu监控

Top命令:

Top命令是Linux下一个实时的、交互式的,对操作系统整体监控的命令,可以对CPU、内存、进程监控。 是Linux下最常用的监控命令。

起一个项目,给点压力,看看效果

一个并发,永远跑,看一下

load average:过去某段时间内CPU平均的负载情况,(排队要执行的的进程数)

第一个值所在的位置:过去一分钟的

第二个值所在的位置:过去五分钟的

第三个值所在的位置:过去十五分钟的

一般来说,排队的数量最好不要超过cpu的核数,比如4核,但是数字大于4,则代表有进程在排队,等待执行

Task:当前有多少个任务

Cpu(s):反映cpu的一些数据:

  us:用户使用(用户进程,如myslq、tomcat、qq)的cpu的百分比

  sy:系统使用的cpu的百分比

  ni:指进程的优先级,一般都是0,不用管

  id:idle,空闲的:=1-us-sy

  wa:wait,因为有些任务是需要些磁盘的(如tomcat需要写日志),而CPU的速度比磁盘写入的速度更快,所以有了这个等待写入数据的状态,如果这个值比较大的话,说明磁盘写入速度比较慢,压力比较大,磁盘那块很可能就有问题

  hi、si、st:跟中断相关的,不用关注

按1会展示每个核的具体情况,由于我的是单核,所以按了1也只有这一个

以下截图为16核的

Mem:memory,内存,一般如果是要看内存不使用top命令,下面有一个专门看内存的命令

Swap:交换分区,磁盘上的一块区域,当内存满时,可以充当临时内存,但是速度还是比真实的内存满很多,比如,系统一直运行中,到某个时候,内存已经满了,这个时候还想启动一个程序,cpu会检测,有哪些程序已经长时间没活动了,但是还占用着内存,这个时候,会把这些程序占用的内存,转移到swap空间中,腾出一些空间保证用户能继续启动程序(如WPS启动着最小化过一段时间不用,再切换回来的时候,会很卡),所以说这个指标反映出内存是否足够的情况,若used数据一直在涨,则说明内存不足

RES:当前进程所占的真实内存的大小

%CPU:指当前进程占cpu使用的比例,为所有核占用之和,比如8核,这里有可能统计出来是800

%MEM:当前进程占用内存的百分比

top命令默认是以占用cpu的比例降序排列的,若想以占用内存的比例来排序,按M即可,按P切回cpu

内存监控

free命令可以查看当前系统内存的使用情况

free -m 以MB为单位显示系统内存的使用情况,同理,也可以使用-k、-g等其他的单位显示,此处换算单位精度的问题,检测为1006M,实际为1G

free命令从两个维度统计了内存的使用情况
第一行Mem:

从操作系统角度统计内存的total(总共)、used(已使用)、free(剩余)、buffers(往内存写内容的时候的缓存)、cached(读内存的时候的缓存,类似于Redis和Mysql的关系)

所以,实际剩余内存=free+buffer+cached

第二行-/+buffers:

从应用程序角度统计内存的total、used、free、buffers、cached

buffer和cache
两者都是Linux下的缓存机制,其中buffer为写操作的缓存,cache为读操作的缓存

swap
交换空间,磁盘上的一块空间,当系统内存不足时,会使用交换空间

磁盘监控

iostat命令可以查看当前机器磁盘io的数据

命令:iostat -x -k 1
-x:展示磁盘的扩展信息

-k:以k为单位展示磁盘数据

1:每1秒刷新一次

avg-cpu:监控cpu的指标

Device:真正监控磁盘的数据,一般数据库服务器消耗磁盘比较多,应用程序一般消耗磁盘不多,消耗cpu比较多

展示结果
util:磁盘IO使用率,单位%,反映磁盘的繁忙程度,上限100%,一般达到90%就代表磁盘压力非常大了,已经达到瓶颈了, 当看到util比较大 的时候,看看rkb和wkb的情况,看看是那个造成的
r/s:每秒读请求数
w/s:每秒写请求数
rkb/s:每秒写磁盘字节数
wkb/s:每秒读磁盘字节数

df命令可以查看当前系统磁盘空间的使用情况
命令:df -h

磁盘速度测试,如果磁盘读写的性能极差,那么压测出来的结果极有可能不准,比如我的2.7M,肯定太小了,一般至少是50多MB/秒
命令:dd if=/dev/zero of=/export/ddtest bs=8k count=1000000 oflag=direct

过几秒钟后Ctrl+c结束

原文地址:https://www.cnblogs.com/zhongyehai/p/10279976.html

时间: 2024-10-04 21:34:01

性能测试三十:监控之CPU、内存、磁盘,命令监控的相关文章

性能测试三十四:jvm内存结构(栈、堆、永久代)

Java内存管理机制 Java采用了自动管理内存的方式Java程序是运行在Jvm之中的Java的跨平台的基于Jvm的跨平台特性内存的分配和对象的创建是在Jvm中用户可以通过一系列参数来配置Jvm Jvm运行时区域 做性能测试经常接触到的三个地方:方法区.虚拟机栈.堆 jvm主要内存结构(简化版): 永久代即上面的方法区 占用内存大小排序:堆内存 > 永久代 > 栈内存 一:栈内存(虚拟机栈) 特点: 1.线程私有 每个线程都有一块自己独有的内存,如果有10个线程,则会产生10个栈内存,100个

聊聊高并发(三十六)Java内存模型那些事(四)理解Happens-before规则

在前几篇将Java内存模型的那些事基本上把这个域底层的概念都解释清楚了,聊聊高并发(三十五)Java内存模型那些事(三)理解内存屏障 这篇分析了在X86平台下,volatile,synchronized, CAS操作都是基于Lock前缀的汇编指令来实现的,关于Lock指令有两个要点: 1. lock会锁总线,总线是互斥的,所以lock后面的写操作会写入缓存和内存,可以理解为在lock后面的写缓存和写内存这两个动作称为了一个原子操作.当总线被锁时,其他的CPU是无法使用总线的,也就让其他的读写都等

java获取cpu,内存,磁盘等信息

原文:java获取cpu,内存,磁盘等信息 源代码下载地址:http://www.zuidaima.com/share/1550463331306496.htm package com.zuidaima.util; import java.io.File; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.ArrayList; import java.util.List; imp

十六.监控系统cpu.内存,磁盘等,自动报警,发送邮件

发送邮箱小工具,将它放在#/usr/bin/mail  chmod +x /usr/bin/mail #!/usr/bin/python #-*- coding: UTF-8 -*- import sys import smtplib import email.mime.multipart import email.mime.text server = 'smtp.163.com' port = '25' def sendmail(server,port,user,pwd,msg): smtp

linux系统CPU,内存,磁盘,网络流量监控脚本

前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat /proc/loadavg 从系统启动开始到当前累积时刻 4, #uptime 系统运行多长时间 5, #mpstat CPU的一些统计信息 6, # 一,linux系统CPU,内存,磁盘,网络流量监控脚本 [作者:佚名来源:不详时间:2010-7-6 [我来说两句大中小] cme.sh网络流量监

性能测试三十六:内存溢出和JVM常见参数及JVM参数调优

堆内存溢出: 此种溢出,加内存只能缓解问题,不能根除问题,需优化代码堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java heap space 永久代溢出 如果发生,则是在初始化的时候,空间太小,解决办法,扩大空间类的一些信息,如类名.访问修饰符.字段描述.方法描述等,所占空间大于永久代最大值,就会出现OutOfMemoryError:PermGen space 内存溢出的检测方法:pid=1730 Jdk/bin目录下

linux系统CPU内存磁盘监控发送邮件脚本之二

#!/bin/bash export PATH export LANG=zh_CN.UTF-8 # # #top之后输入数字1,可以查看每颗CPU的情况. # # #先配置好mailx邮箱账号密码: #cat>/etc/mail.rc<<"EOF" #set sendcharsets=iso-8859-1,utf-8 #set [email protected] #set smtp=smtp.163.com #set [email protected] #set sm

性能测试三十六:内存溢出和jvm常见参数

堆内存溢出: 此种溢出,加内存只能缓解问题,不能根除问题,需优化代码堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java heap space 永久代溢出 如果发生,则是在初始化的时候,空间太小,解决办法,扩大空间类的一些信息,如类名.访问修饰符.字段描述.方法描述等,所占空间大于永久代最大值,就会出现OutOfMemoryError:PermGen space 内存溢出的检测方法:pid=1730 Jdk/bin目录下

性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题

使用Jprofiler监控分析案例 一.cpu负载过高:http://localhost:8080/PerfTeach/CpuTopServlet?id=1 cpu消耗高的可能原因1.使用了复杂的算法,比如加密.解密2.压缩.解压.序列化等操作3.代码bug,比如死循环 dstat监控起来,先看一下资源是否正常,用5个并发跑60秒 CPU:100% TPS才几百,肯定就有问题 TOP:JAVA占的CPU最多 查看进程,是tomcat 使用jprofiler查看,很明显有个自己写的userToSt