概述:服务器的性能与四大硬件相关:CPU、内存、网络、硬盘相关
在做性能分析时,需要额外安装一些命令或者软件
yum install epel-release
yum install -y sysstat iftop iperf3 # sysstat可以查看内存相关性能,iftop和iperf3可以查看网络相关性能
一、ps命令
基本应用:
ps -ef |head -5,使用head命令查看前5行
只显示部分字段内容:
ps -o pid,comm,pcpu,pmem,time -ef
ps -o pid,comm,pcpu,pmem,time -e
通过ps查找对应的pid,关闭进程:
需求:开启一个ping进程(ping 百度网站),然后通过ps命令查找对应的进程ID,使用管道命令将该进程杀掉
ps -ef |grep baidu |grep -v grep| awk '{print $2}'|xargs kill
二、top命令
略,在其他Linux命令文章里面已写
组合命令:
例题1:每隔1秒检测指定进程的cpu,检测20次
top -d 1 -n 20 -p 要看进程的PID值
比如:top -d 1 -n 20 -p 12677
例题2:检测指定PID的内存20次
PID=要看的进程ID
top -b -n 20 -d 1 -p $PID| grep --line-buffered $PID| awk '{print $10}'
for i in {1..20}; do top -d 1 -n 1 -p $PID| grep $PID | awk '{print $10}'; sleep 1; done
例题三:测试负载:
us:
for count in $(seq 0 $(($(cat /proc/cupinto | grep processor | wc -l)-1))); do taskset -c $count yes > /dev/null & done && sleep 30 && ps -ef | grep yes |grep -v grep |awk '{print $2}' | xargs kill;
sy:
for count in `seq 1 100`; do echo "run cat ${count} times"; cat /dev/zero > /dev/null & done && sleep 30 && ps -ef | grep cat |grep -v grep |awk '{print $2}' |xargs kill -9;
二、内存性能
free命令
free:
显示的内存容量单位默认使用kb
free -h:
以人类更能读懂的容量来进行显示,比如多少G
total:总物理内存
used:已经使用的物理内存
free:没有使用过的物理内存
shared:多进程共享内存
buff/cache:读写缓存内存,这部分内存时当空闲来用的,当free内存不足时,linux内核会将此内存释放
buffer是即将要被写入磁盘的,cache是从磁盘中读出来的
available:还能被应用程序使用的物理内存
demsg命令
demsg | grep memory
demsg | grep "out of memory"
关注会导致性能问题的错误信息
三、硬盘IO(Input Output)
iostat命令:
iostat
iostat 1:每间隔1秒刷一次,1可以更改为其他间隔时间
iostat -d:只显示Device的信息
iostat -c:只显示cpu的信息
测试硬盘IO:
写:dd if=/dev/zero bs=1024 count=4096000 of=test.iso
读:dd if=test.iso bs=64k |dd of=/dev/null
bs:设置读写缓冲区的字节数
只观察Device的tps指标:iostat 1|awk '{print $2; fflush()}'|grep --line-buffered -A 1 tps|grep -P '\d+.\d+'
四、网络IO
iftop命令:
iftop -n -i eth0:-n不进行dns反解析,-i指定网络接口
=>代表发送数据,后面的三项数据分别是2s、10s、40s的平均数据
<=代表接收数据
TX(Transmission):发送数据
RX:接收数据
TOTAL:开启iftop后全部流量
cum:开启iftop后累积流量
peak:流量峰值
rates:平均值,2s、10s、40s的平均流量
iftop命令详解:
https://www.vpser.net/manage/iftop.html
iperf3工具:
iperf3是一个网络速度测试工具,支持IPv4与IPv6,支持TCP、UDP、SCTP传输协议,用于主动测量IP网络上可达到的最大带宽的工具
服务端:iperf3 -s -p 8000
客户端:iperf3 -c 服务端IP -p 8000 -t 10
-t:测试时间,单位为s
-R:反向测试
-f:指定显示数据格式:K M G
iperf3详解:
https://www.oschina.net/p/iperf3?hmsr=aladdin1e1
netstat命令:
记录几个统计的命令:
netstat -an | awk '/^tcp/{++status[$NF]}END{for(s in status)print s,status[s]}'
for count in `seq 1 10`;do echo "查询状态第${count}次";netstat -an | awk '/^tcp/{++status[$NF]}END{for(s in status)print s,status[s]}';sleep 1;echo -e "";done