Skip to content
Back to skills

Benchmarking

ASecurity

性能基准测试

  • 58 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added February 7, 2026
toolsbashsqlapiperformance

Works with

  • terminal
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add chaterm/terminal-skills --skill benchmarking --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Benchmarking?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Benchmarking
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chaterm-benchmarking/badge)](https://www.skillsdirectory.com/skills/chaterm-benchmarking)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: benchmarking
description: 性能基准测试
version: 1.0.0
author: terminal-skills
tags: [performance, benchmark, stress, load-test, sysbench]
---

# 性能基准测试

## 概述
压力测试、基准测试工具使用技能。

## sysbench

### 安装
```bash
# Debian/Ubuntu
apt install sysbench

# CentOS/RHEL
yum install sysbench
```

### CPU 测试
```bash
# 单线程
sysbench cpu run

# 多线程
sysbench cpu --threads=4 run

# 指定时间
sysbench cpu --threads=4 --time=60 run
```

### 内存测试
```bash
# 顺序读写
sysbench memory run

# 随机读写
sysbench memory --memory-access-mode=rnd run

# 指定大小
sysbench memory --memory-block-size=1M --memory-total-size=10G run
```

### 磁盘 IO 测试
```bash
# 准备测试文件
sysbench fileio --file-total-size=10G prepare

# 随机读写
sysbench fileio --file-total-size=10G --file-test-mode=rndrw run

# 顺序读
sysbench fileio --file-total-size=10G --file-test-mode=seqrd run

# 清理
sysbench fileio --file-total-size=10G cleanup
```

### MySQL 测试
```bash
# 准备数据
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root \
    --mysql-password=pass --mysql-db=test --tables=10 --table-size=100000 prepare

# 运行测试
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root \
    --mysql-password=pass --mysql-db=test --tables=10 --table-size=100000 \
    --threads=16 --time=60 run

# 清理
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root \
    --mysql-password=pass --mysql-db=test cleanup
```

## fio 磁盘测试

### 基础测试
```bash
# 顺序读
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --runtime=60

# 顺序写
fio --name=seqwrite --rw=write --bs=1M --size=1G --numjobs=1 --runtime=60

# 随机读
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60

# 随机写
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --runtime=60

# 混合读写
fio --name=randrw --rw=randrw --bs=4k --size=1G --numjobs=4 --rwmixread=70 --runtime=60
```

### 配置文件
```ini
# test.fio
[global]
ioengine=libaio
direct=1
runtime=60
time_based

[seqread]
rw=read
bs=1M
size=1G

[randread]
rw=randread
bs=4k
size=1G
numjobs=4
```

```bash
fio test.fio
```

## HTTP 压测

### ab (Apache Bench)
```bash
# 基础测试
ab -n 1000 -c 100 http://localhost/

# 带 Keep-Alive
ab -n 1000 -c 100 -k http://localhost/

# POST 请求
ab -n 1000 -c 100 -p data.json -T application/json http://localhost/api
```

### wrk
```bash
# 基础测试
wrk -t4 -c100 -d30s http://localhost/

# 带脚本
wrk -t4 -c100 -d30s -s post.lua http://localhost/api
```

### hey
```bash
# 基础测试
hey -n 1000 -c 100 http://localhost/

# 指定时间
hey -z 30s -c 100 http://localhost/

# POST 请求
hey -n 1000 -c 100 -m POST -d '{"key":"value"}' http://localhost/api
```

## 网络测试

### iperf3
```bash
# 服务端
iperf3 -s

# 客户端
iperf3 -c server_ip

# UDP 测试
iperf3 -c server_ip -u -b 1G

# 双向测试
iperf3 -c server_ip -d

# 多线程
iperf3 -c server_ip -P 4
```

### netperf
```bash
# 服务端
netserver

# TCP 吞吐
netperf -H server_ip

# TCP 延迟
netperf -H server_ip -t TCP_RR
```

## 常见场景

### 场景 1:服务器基准测试
```bash
#!/bin/bash
echo "=== CPU 测试 ==="
sysbench cpu --threads=$(nproc) --time=30 run

echo "=== 内存测试 ==="
sysbench memory --threads=$(nproc) --time=30 run

echo "=== 磁盘测试 ==="
fio --name=test --rw=randrw --bs=4k --size=1G --runtime=30 --time_based
```

### 场景 2:数据库基准
```bash
#!/bin/bash
# MySQL OLTP 测试
sysbench oltp_read_write \
    --mysql-host=localhost \
    --mysql-user=root \
    --mysql-password=pass \
    --mysql-db=sbtest \
    --tables=10 \
    --table-size=100000 \
    --threads=16 \
    --time=300 \
    --report-interval=10 \
    run
```

## 结果解读

| 指标 | 说明 |
|------|------|
| TPS | 每秒事务数 |
| QPS | 每秒查询数 |
| IOPS | 每秒 IO 操作数 |
| 延迟 | 响应时间 |
| 吞吐量 | 数据传输速率 |

## 故障排查

```bash
# 检查系统负载
uptime
vmstat 1

# 检查 IO
iostat -x 1

# 检查网络
sar -n DEV 1
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…