目录-性能测试指南
0. 前提
目前的比较粗糙,没有描述前因后果,后续添加场景分析
1. 查看内存占用情况
# 查看前10的内存占用
ps aux|head -1 ;ps aux|grep -v PID|sort -rn -k +3|head
# 查看占有100Mb的目录
find / -size +100M -exec ls -lh {} \;
2. mysql连接数
# 查看ip与对应连接数
show variables like '%max_connections%'
select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip
# 看到总的mysql连接数
select count(*) from information_schema.processlist;
show processlist;
3. 进程、线程连接数
top -H -p 23433
pstree -p
# 查看线程数
pstree -p {pid} | wc -l
# 查看某pid进程下的线程
pstree -apnh -p {pid}
4.GC频率(回收日志)、JVM内存情况
# 查看GC情况
# S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
# S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
# E: 年轻代中Eden(伊甸园)已使用的占当前容量百分比
# O: old代已使用的占当前容量百分比
# P: perm代已使用的占当前容量百分比
# YGC: 从应用程序启动到采样时年轻代中gc次数
# YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
# FGC: 从应用程序启动到采样时old代(全gc)gc次数
# FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
# GCT: 从应用程序启动到采样时gc用的总时间(s)
jstat -gc {pid} {time}
jstat -gc 20889 3000
jstat -gcutil {pid} {time} {times}
jstat -gcutil 20889 1000 5
jstat -class 20889 5000 5
# 查看GC中堆内存详细使用情况
jmap -heap 20889
# 快捷键m
top -Hp 20889
5.查看IO,响应的时间、吞吐量
iostat -x 10 3
# yum install iotop -y
iotop
vmstat 2 5
iostat -dx
# 下载完,直接命令行 nload,会看到 Curr/Avg/Min/Max 等参数
# 如果Cur持续很长时间接近 带宽峰值,基本上可以确定达到瓶颈了,但是不排除有管理员上传或者下载软件,所以需要持续观察一段时间。
nload
nload
6.查看堆栈
jstack {pid}
7. 查看基本的系统信息
ulimit -a
8.当前tcpip连接的状态
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
9. 压测检测-飞行记录
# 1.进入jdk的bin目录,找到JFR
# 2.jcmd+jfr 飞行记录,查看帮助
jcmd 15164 help
# 3.检查当前状态,是否加锁
jcmd 15164 VM.check_commercial_features
# 4.解锁
jcmd 15164 VM.unlock_commercial_features
# 5.开启JFR
jcmd 15164 JFR.start
# 6.查找到对应的recording日志,并保存对应id的记录到test.jfr
jcmd 15164 JFR.dump filename=/xxx/jmeter/test.jfr recording=1 记录
# 7.结束JFR
jcmd 15164 JFR.stop
# 8. 将jrf文件下载下来,在本地的jdk工具中,打开这个记录,可以可视化的查看内存、堆栈等情况