一、cpuinfo(cpu)
# 查看cpu信息 cat /proc/cpuinfo # 查看CPU信息(型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看逻辑CPU的个数 cat /proc/cpuinfo| grep "processor"| wc -l
二、top(cpu、内存、磁盘io)
N:以PID顺序排列
P:以CPU顺序排列
M:以内存顺序排列
1:显示每个cpu的信息
us:用户空间占cpu
sy:系统空间占cpu
ni:改变过优先级的进程占cpu
id:空闲cpu占比
wa:等待磁盘io的cpu占比,如果高说明磁盘io是瓶颈
hi:硬件中断
si:软件中断
st:实时
三、dstat(cpu、内存、磁盘io、网络io)
paging:系统的分页活动,当系统开始大量使用分页空间时值比较高,说明系统内存不足
int:线程中断,当多线程忙碌时值比较高
csw:上下文切换,当多线程忙碌时值比较高
四、lsof(进程、句柄)
# 查看占用端口的进程 lsof -i:xx
# 查linux最大文件句柄数(open files) ulimit -a # 查当前句柄/进程数量 lsof -n|awk '{print $2}'| sort | uniq -c | sort -nr | head # 查单个进程的句柄 lsof -p 2333
五、jstat(内存)
# 查看jvm情况,每隔1秒输出,输出60次,每隔10次输出一次列头 jstat -gc -h10 xxx 1000 60
S0C:存活区0分配内存(都是KB)
S1C:存活区1分配内存
S0U:存活区0使用内存
S1U:存活区1使用内存
EC:年轻代分配内存
EU:年轻代使用内存
OC:老年代分配内存
OU:老年代使用内存
MC:元空间分配内存
MU:元空间使用内存
CCSC:压缩类分配内存
CCSU:压缩类使用内存
YGC:年轻代GC次数
YGCT:年轻代GC总时间(秒)
年轻代每次GC时间 = YGCT / YGC
FGC:老年代GC次数
FGCT:老年代GC总时间(秒)
老年代每次GC时间 = FGCT / FGC
GCT:GC总时间(秒)
六、jmap(内存)
# 输出jvm内存分配情况 jmap -heap xxx
jmap -dump:live,format=b,file=/home/dump xxxxx
输出进程内存dump信息,后缀改为pcap以后可以用eclipse的MAT插件打开
七、ps、jstack(线程)
# 查进程中占用cpu高的线程 ps -mp xxxxx -o THREAD,tid,time | sort -rn
# 将十进制转换为十六进制 printf "%x " xxx
# 输出线程堆栈信息,筛选tid输出之后的30行 jstack -l xxxx(pid) | grep xxx(tid) -A 30
# 输出线程堆栈信息到文件,-l 打印锁信息 jstack -l xxxxx > 1.txt
八、jps(jvm)
# 输出jvm进程通过文件传递到进程中的参数 jps -v
九、netstat(连接)
# 查看tcp连接状态统计 netstat -nat | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# 查看某个端口的tcp连接状态统计 netstat -nat |grep -i "80"| awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# 查看某个端口的连接数量 netstat -nat|grep -i "80"|wc -l
# 查看连接某端口最多的ip netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i]," ",i}' | sort -nr
十、tcpdump(网络)
# 查看网卡 ifconfig # 抓包并保存到文件 tcpdump tcp -i eth0 -s 0 and host xxx.xxx.xxx.xxx and port xxxx -w log.pcap
-i:只抓经过接口eth0的包
-s 0:抓到完整的数据包
-w:保存在文件
十、iotop(磁盘io)
# 安装 yum -y install iotop # 查看进程的io占用 iotop