服务器性能与网络速度全面测试脚本(SuperBench 增强本地版)
使用示例
Ubuntu / Linux
bash <(curl -fsSL https://pc530.com/scripts/read/superbench.sh)
WINDOWS PowerShell
irm "https://pc530.com/scripts/read/superbench.sh" | iex
说明
1. 使用说明
步骤 1:生成脚本文件
直接在终端中复制并粘贴上面的整段代码(包括 cat << 'EOF' 和最后的 EOF),回车后,系统会自动在当前目录下创建一个名为 superbench.sh 的文件。
步骤 2:赋予执行权限
chmod +x superbench.sh
### 步骤 3:运行测试
```bash
sudo ./superbench.sh
```
2. 测试结果解读指南
运行该脚本后,输出结果主要分为三部分,以下是对应的排查与优化建议:
- 硬件配置区:
- 虚拟化架构(Virt):如果是
kvm或vbox,说明是常见的虚拟化服务器;如果是none,则说明是物理机(独立服务器)。 -
交换分区(Swap):如果显示
0 MB,且你的服务器内存较小(如 1G/2G),建议后续可以通过脚本为其增加 Swap,防止因为运行 Go 或 Docker 导致内存溢出(OOM)直接死机。 -
硬盘 I/O 速度区:
-
1M 连续写入速度:如果大于 200 MB/s,说明使用的是较好的 SSD 固态硬盘;如果大于 500 MB/s - 1 GB/s,说明是高性能的 NVMe 闪存,非常适合运行 MySQL、Redis 等高并发数据库。如果低于 100 MB/s,说明是传统的机械硬盘或受到了服务商的严格限速。
-
网络测速区:
- 脚本在最后会给出一个 Speedtest 网页分享链接(Share URL)。你可以复制该链接到浏览器中打开,能直观地看到这台服务器到全球各个测速节点的上传、下载带宽以及网络延迟(Ping 值)。
脚本内容
#!/bin/bash
# 检查是否以 root 权限运行
if [ "$EUID" -ne 0 ]; then
echo "提示:建议使用 sudo 或 root 权限运行此脚本,以获取更准确的硬件信息。"
fi
echo "================================================="
echo " 服务器硬件配置与性能全面测试 "
echo "================================================="
# 1. 收集系统基本信息
OS=$(hostnamectl | grep "Operating System" | cut -d: -f2 | sed 's/^[ \t]*//')
KERNEL=$(uname -r)
CPU_NAME=$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//')
CPU_CORES=$(awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo)
RAM_TOTAL=$(free -m | awk '/Mem:/ {print $2}')
SWAP_TOTAL=$(free -m | awk '/Swap:/ {print $2}')
VIRT=$(systemd-detect-virt)
UPTIME=$(uptime -p)
echo "操作系统 : $OS"
echo "内核版本 : $KERNEL"
echo "CPU 型号 : $CPU_NAME ($CPU_CORES 核)"
echo "内存总量 : $RAM_TOTAL MB"
echo "交换分区 : $SWAP_TOTAL MB"
echo "虚拟化架构 : $VIRT"
echo "运行时间 : $UPTIME"
echo "================================================="
# 2. 测试硬盘 I/O 读写速度
echo "正在测试硬盘 I/O 读写速度 (请稍候)..."
echo "-------------------------------------------------"
# 使用 dd 命令进行三次不同块大小的写入测试
io1=$(dd if=/dev/zero of=test_io_file bs=64k count=16k conv=fdatasync 2>&1 | awk -F, '{io=$NF} END {print io}' | sed 's/^[ \t]*//')
rm -f test_io_file
io2=$(dd if=/dev/zero of=test_io_file bs=1M count=1k conv=fdatasync 2>&1 | awk -F, '{io=$NF} END {print io}' | sed 's/^[ \t]*//')
rm -f test_io_file
io3=$(dd if=/dev/zero of=test_io_file bs=4k count=10k conv=fdatasync 2>&1 | awk -F, '{io=$NF} END {print io}' | sed 's/^[ \t]*//')
rm -f test_io_file
echo "1M 块大小连续写入 : $io2"
echo "64k 块大小写入 : $io1"
echo "4k 块大小随机写入 : $io3"
echo "================================================="
# 3. 测试三网下载速度
echo "正在测试三网节点下载速度 (依赖 speedtest-cli)..."
echo "-------------------------------------------------"
# 检查并尝试安装 speedtest-cli
if ! command -v speedtest &> /dev/null; then
echo "正在为您安装 speedtest 测试工具..."
apt-get update -y > /dev/null 2>&1
apt-get install speedtest-cli -y > /dev/null 2>&1
fi
if command -v speedtest &> /dev/null; then
# 运行测速并过滤核心输出
speedtest --single
else
echo "错误:无法自动安装 speedtest-cli,请检查网络或手动执行 apt install speedtest-cli"
fi
echo "================================================="
echo " 测试完成!"
echo "================================================="