服务器性能参数swp,性能测试连载 (30)-详细的服务器监控压测工具介绍

性能答疑 QQ 群:697244251

概述

linux 自身有很多性能分析工具。并且提供了详细的输出格式。熟练掌握这些工具可以帮助我们更快的发现性能瓶颈,为性能调优提供思路。

工具一览 常用工具

功能

top

展示所有进程信息

vmstat

展示详细的系统,硬件,信息

lscpu

cpu 信息查看

sysstat

工具集,包括 sar,mpstat,iostat,pidstat

ps

显示进程信息

free

显示内存使用情况

strace

拦截进程的系统调用

netstat

统计网络信息

sysbench

进程模拟工具

Stress-ng

模拟 cpu 压力

iozone

IO 测试工具

top 命令详解

af04ab00b9346c918f2665463b6e2aa0.png

load average:平均负载

PID:进程号

USER:进程所有者的名字。

PRI:进程优先级

NI nice:级别

SIZE:进程使用的内存(代码、数据和栈),kb 单位

RSS:物理 RAM 使用量,kb 单位

SHARE:和其它进程共享的内存,kb 单位

STAT 进程状态 S 睡眠,R=运行,T=停止或跟踪,D=不可中断的睡眠,Z=僵尸。

%CPU CPU 使用量。

%MEM 物理内存用量

TIME进程使用的总 CPU 时间(从启动开始算)

COMMAND 进程的命令行启动命令(包括参数)

vmstat 命令详解

1f3103d395b8dda5a39bb20453757bba.png

各列含义如下

进程

r:等待执行时间的进程数

b:在不可中断睡眠中的进程数

内存

swpd:已使用的虚拟内存量

free:空闲内存量

buff:作为缓冲的内存

cache:作缓存的内存

Swap

si:从交换分区写到内存的量

so:从内存写到交换分区的大小

IO

bi:磁盘读速率 (blocks/s)

bo:磁盘写速率 (blocks/s)

System

in:每秒钟的中断次数

cs:每秒的上下文切换次数

CPU(总 CPU 时间的百分比):

us:用户空间运行的时间百分比

sy:系统空间运行的时间百分比

id:空闲时间

wa:等待 IO 的时间

vmstat -a 显示活跃和非活跃内存

vmstat -f 显示从系统启动至今的 fork(系统调用)

vmstat -s 显示内存相关统计信息及多种系统活动数量

vmstat -d【查看磁盘的读写】

vmstat -p /dev/sda1

vmstat -m 查看系统的 slab 信息

lscpu

a92b8d658bfeafbcd1c77e819944e224.png

1.Cpu64 位

2.Cpu 6 核

3.NUMA 点个节点

4.Cpu 的核心频率

5.说明此服务器为虚拟机

sar 命令

75d3c63127d59fcd783d958a0eeb82e5.png

3f193848f040d76baf0d0600f0fa590a.png

sar -p(查看全天 cpu 数据)

sar -u 1 10(1:每隔一秒,10:写入 10 次)

sar -r(查看全天内存数据)

sar -r 1 10

sar -d 查看全天磁盘数据

sar -d 1 2(1:每隔一秒,2:写入 2 次)

sar -n DEV(查看全天网络流量数据)

sar -n DEV 1 2

sar -b 5 10 内存及交换空间 I/O 和传送速率监控

sar -q 1 12 监控进程队列长度和平均负载状态

sar -W 5 10 内存交换监控

sar -d 1 2 -p 磁盘监控

sar -B

mpstat 命令

mpstat -P ALL 1 每秒中采集一次 cpu 各个核心的使用资源情况

mpstat -P 0 1 5 采集第一颗 cpu 的信息

c2358aa204b690fc1a211488664abb15.png

参数

解释

%usr

在用户空间消耗的 cpu 时间百分比

%sys

在系统空间消耗的 cpu 时间百分比

%iowait

等待 IO 的 cpu 时间百分比

%irq

硬中断的 cpu 时间百分比

%soft

软中断的 cpu 时间百分比

%idle

空闲的 cpu 时间百分比

iostat 命令

iostat -x -k -d 1 采集 IO 数据

iotop -botq -p【pid】输出进程的 io 信息

iotop -d 2 -n 5 间隔 2 秒,输出 5 次 监控时间段内的 IO

iotop -o 显示产生 IO 的进程

iostat -dxm 3

12d5245a5c86687d9faad7bce53f4c47.png

参数

解释

rrqm/s

每秒对该设备的读请求被合并次数

wrqm/s

每秒对该设备的写请求被合并次数

r/s

每秒完成的读次数

w/s

每秒完成的写次数

rkB/s

每秒读数据量 (kB 为单位)

wkB/s

每秒写数据量 (kB 为单位)

avgrq-sz

平均每次 IO 操作的数据量 (扇区数为单位)

avgqu-sz

在平均等待处理的 IO 请求队列长度,该参数表示了设备的繁忙程度

await

平均每次 IO 请求等待时间 (包括等待时间和处理时间,毫秒为单位)

svctm

平均每次 IO 请求的处理时间 (毫秒为单位)

rkB/s

软中断的 cpu 时间百分比

%util

1 秒中有百分之多少的时间用于 I/O 操作,该参数表示了设备的繁忙程度

pidstat 命令

pidstat -u -p ALL 查看所有进程的 cpu 使用

pidstat -r 查看进程的内存使用

pidstat -d 查看进程 IO

pidstat -w -p【pid】统计进程的上下文切换

d6966e68f726ff7d55c1dcfeb2f28294.png

cswch/s:进程每秒主动切换次数

nvcswch/s:进程每秒被动切换次数

ps 命令

ps aux | sort -k3nr |head -n 10 按照按照消耗 CPU 前 10 排序的进程

ps aux | sort -k4nr |head -n 10 按照按照消耗内存前 10 排序的进程

ps -A -o stat,ppid,pid,cmd |grep -e '[Zz]' 定位僵尸进程

kill -HUP 僵尸进程父 ID 杀死僵尸进程

ps -eLo pid,stat | grep 3598 | grep running | wc -l 根据进程状态筛选线程

pstree -p | wc -l 查询当前整个系统已用的线程或进程数

pstree -p pid | wc -l 统计进程的线程数

ps -o nlwp pid 查看进程下的线程数

netstat 命令

1:netstat -nat|grep ESTABLISHED|wc -l 查看系统的总连接数

2:netstat -anp|grep pid|wc -l 统计进程的总连接数

1 和 2 组合使用

netstat -n | awk '/tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 查看连接状态

sysbench

进程模拟工具

apt install sysbench sysstat 安装 sysbench

sysbench --threads=10 --max-time=300 threads run 10 个线程运行 5 分钟的基准测试,模拟多线程切换

Stress-ng

stress-ng -c 2 -t 30 -c 指定进程数 -t 指定时间

stress-ng -c 2 --cpu-method pi 产生 2 个进程做圆周率算法压力

stress-ng -c 16 --cpu-method all 生成 16 个进程使用多种不同的算法竞争 cpu

stress-ng --sock 2 产生 2 个进程调用 socket 相关函数产生压力

taskset -c 16 stress-ng --timeout 30 --cpu 1 生成 16 个进程对索引为 0 的逻辑 cpu 施加压力, 持续 30 秒

stress-ng -c 0 -l 40 stress-ng -c 0 -l 40

stress-ng -c 16 --timeout 300 模拟 16 个进程争夺 cpu 持续 300 秒

iozone

iozone 安装:

wget http://www.iozone.org/src/current/iozone3_482.tar

tar -xvf iozone3_429.tar

cd iozone3_429/src/current

apt-get install gcc

make

make linux-ia64

iozone 使用:

iozone -a -n 512k -g 4m -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls 从 512k 写到 4 兆的文件

其它的 IO 测试

time dd if=/dev/zero of=test bs=1M count=4096 测试 IO 读写速度

sync;time -p bash -c "(dd if=/dev/zero of=test bs=1M count=200)" 当前目录下创建一个 test 文件,写入 200 个 1M 的数据。测试写瓶颈

hdparm -tT --direct /dev/sda 测试读瓶颈

上下文和中断的查看命令

dstat -y 查看系统中断和上下文切换

grep ctxt /proc/$pid/status 统计上下文切换数

watch -d cat /proc/interrupts 统计进程中断的方式

watch -d -n 1 'cat /proc/softirqs'查看中断种类。NET_TX 或 NET _RX 如果变化很快就是网络中断引起,否则 s1 系统其他原因造成的中断

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值