3.是否存在内存泄漏
1. 查看物理内存的使用情况
free命令查看使用情况
标准:linux的可用物理内存可为0,全部用完,只要不使用虚拟内存
2.查看是否使用了虚拟内存
方法1: vmstat 查看si so列
标准: si 和so大于0,表示物理内存不够用或者内存泄露了
方法2: sar –W 10 3 (10和3代表了每个10秒监控一次,总共监控3次)
标准:值大于0,就说明内存已经饱和了
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量
3. 找出高内存使用的进程
3.1内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
3.2 虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head
%MEM 进程的内存占用率
VSZ 进程所使用的虚存的大小
RSS 进程使用的驻留集大小或者是实际内存的大小
四、linux性能监控–硬盘IO的监控
核心指标
1.硬盘的使用率
2.物理硬盘驱动器忙于读或写入的时间
工具:iostat、iotop、pt-ioprofile
1. 查看硬盘的使用率: df -lh
2. 查看具体的那个硬盘的IO较高:
使用iostat 工具来查
ostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该 命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所 需的统计信息
安装iostat 安装命令: yum install sysstat
语法: iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device
[…] | ALL ] [ -p [ device [,…] | ALL ] ] [ interval [ count ] ]
-c 显示CPU使用情况
-d 显示磁盘使用情况
-k 以K为单位显示
-m 以M为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS使用情况
-p 可以报告出每块磁盘的每个分区的使用情况
-t 显示终端和CPU的信息 -x 显示详细信息
iostat -d -k 2
参数 -d 表示,显示设备(磁盘)使用状态;-k 某些使用 block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。
iostat -x 5 查看:%util
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒);
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
**标准:**物理硬盘驱动器忙于读或写入的时间 40% 60% 80%
3. 查看哪个进程耗IO比较高
使用iotop 命令: 查询出较大的IO 的进程
iotop是一个用来监视磁盘I/O使用状况的 top 类工具,可监测到哪一个程序使用的磁盘IO的信息
**安装:**yum install iotop
**查看:**iotop 按 o 只显示有磁盘 IO 活动的进程
语法:iotop [OPTIONS]
- –version #显示版本号
- -h, --help #显示帮助信息
- -o, --only #显示进程或者线程实际上正在做的I/O,而不是全部的,可以随时切换按o
- -b, --batch #运行在非交互式的模式
- -n NUM, --iter=NUM #在非交互式模式下,设置显示的次数,
- -d SEC, --delay=SEC #设置显示的间隔秒数,支持非整数值
- -p PID, --pid=PID #只显示指定PID的信息
- -u USER, --user=USER #显示指定的用户的进程的信息
- -P, --processes #只显示进程,一般为显示所有的线程
- -a, --accumulated #显示从iotop启动后每个线程完成了的IO总数
- -k, --kilobytes #以千字节显示
- -t, --time #在每一行前添加一个当前的时间
4. 定位来源文件
pt-ioprofile定位负载来源文件,通过iotop或ps找出负载较高的进程
安装: 下载地址https://www.percona.com/downloads/percona-toolkit/LATEST/
CentOS 7下安装:
yum -y install https://www.percona.com/downloads/perconatoolkit/3.0.1/binary/redhat/7/x86_64/percona-toolkit-3.0.1-1.el7.x86_64.rpm
使用:
**命令格式:**pt-ioprofile --profile-pid=xxx
pt-ioprofile --profile-pid=xxx --cell=size
pt-ioprofile --profile-pid=需要监控的PID --cell=size
pt-ioprofile的原理是对某个pid附加一个strace进程进行IO分析。
**步骤1:**iotop 查询出高io的pid
**步骤2:**pt-ioprofile --profile-pid=需要监控的PID --cell=size
对于定位问题更有用的是通过IO的吞吐量来进行定位。
使用参数 --cell=sizes,该参数将结果已 B/s 的方式展示出来
pt-ioprofile --profile-pid=需要监控的PID --cell=sizes
五、linux性能监控–网络监控
网络的监测是所有 Linux 子系统里面最复杂的,有太多的 因素在里面,比如:延迟、阻塞、冲突、丢包等,更糟的是与 Linux 主机相连的路由器、交换机、无线信号都会影响到整体 网络并且很难判断是因为 Linux 网络子系统的问题还是别的设 备的问题,增加了监测和判断的复杂度。
核心指标
- 网络带宽是否够用
- 丢包率、错误重传
- 网络延迟/堵塞
- 网络错误
监控网络操作步骤
1.查每秒接受和发送的数据量,检查当前带宽是否够用
使用nicstat 工具查看网卡的利用率
nicstat可以提供更加全面的网卡信息。
- 显示TCP流量统计
- 显示UDP流量统计
- 报告进出网卡的字节数
- 报告进出网卡的数据数
- 报告网卡利用率
- 报告NIC饱和度和其他信息
nicstat下载
cd /usr/local/src
wget http://nchc.dl.sourceforge.net/project/nicstat/nicstat-1.92.tar.gz
nicstat安装
tar -xzf nicstat-1.92.tar.gz
cd nicstat-1.92
cp Makefile.Linux Makefile
make
nicstat使用
./nicstat.sh
Time列:表示当前采样的响应时间
lo and eth0 : 网卡名称。
rKB/s : 每秒接收到千字节数。
wKB/s : 每秒写的千字节数。
rPk/s : 每秒接收到的数据包数目。
wPk/s : 每秒写的数据包数目。
rAvs : 接收到的数据包平均大小。
wAvs : 传输的数据包平均大小。
%Util : 网卡利用率(百分比)。
Sat : 网卡每秒的错误数.网卡是否接近饱满的一个指标.尝试去诊断网络问题的时候,推荐使用-x选项去查看更多的统计信息。
./nicstat.sh –t 用于查看tcp信息
InKB : 表示每秒接收到的千字节
OutKB : 表示每秒传输的千字节
InSeg : 表示每秒接收到的TCP数据段(TCP Segments)
OutSeg : 表示每秒传输的TCP数据段(TCP Segments)
Reset : 表示TCP连接从ESTABLISHED或CLOSE-WAIT状态直接转变为CLOSED状态的次数
AttF : 表示TCP连接从SYN-SENT或SYN-RCVD状态直接转变为CLOSED状态的次数,再加上TCP连接从SYN-RCVD状态直接转变为LISTEN状态的次数
%ReTX : 表示TCP数据段(TCP Segments)重传的百分比.即传输的TCP数据段包含有一个或多个之前传输的八位字节
InConn : 表示TCP连接从LISTEN状态直接转变为SYN-RCVD状态的次数
OutCon : 表示TCP连接从CLOSED状态直接转变为SYN-SENT状态的次数
Drops : 表示从完成连接(completed connection)的队列和未完成连接(incomplete connection)的队列中丢弃的连接次数
./nicstat.sh -u 用于查看UDP信息
InDG : 每秒接收到的UDP数据报(UDP Datagrams)
OutDG : 每秒传输的UDP数据报(UDP Datagrams)
InErr : 接收到的因包含错误而不能被处理的数据包
OutErr :因错误而不能成功传输的数据包
./nicstat.sh –x 查看扩展信息
./nicstat.sh -a 等同于执行-t -u -x
2. 丢包率、错误重传
查看丢包方法1:使用ifconfig,查看 dropped是否有计数,有计数的话存在丢包的情况
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
…(img-a2KYolHY-1712973290850)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-HZtK1uX6-1712973290850)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!