$ PC530 常用脚本

服务器性能与网络速度全面测试脚本(SuperBench 增强本地版)

分类:ubuntu 系统维护 · 文件名:superbench.sh · 收藏:0

使用示例

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):如果是 kvmvbox,说明是常见的虚拟化服务器;如果是 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 "================================================="