干货日志

记录和分享技术成长的脚步

VPS服务器常见测试命令及脚本

目录
[隐藏]

如果经常关注我的主博客的话,以前会经常看到我做的一个Linux VPS评测,那么这些评测命令和脚本都是哪里来的呢?我这篇文章将会介绍一些常见的测试命令和常见的测试脚本。之前我也整理过一些,这次不仅加了测试命令,还整理了一些测试代码。这些命令中大部分是可以在OVZ、KVM平台通用的,当然针对不同的硬件有些测试命令也是不一样的。如果想全面测试一个VPS,现成的测试脚本则是最好的选择。

1.常见的测试命令

1.1.基础信息测试

1.1.1.CPU信息

# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
      8  Intel(R) Xeon(R) CPU            E5-2680 v2   @ 2.80GHz

以上信息显示,有8个逻辑CPU, CPU的型号是E5-2680 v2。

more /proc/cpuinfo | grep "model name"
model name Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
model name Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
model name Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
model name Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
model name Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
model name Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
model name Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
model name Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz

8个逻辑CPU详细显示。

# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 
     2  QEMU Virtual CPU version (cpu64-rhel6) 

如果有显示以上信息,说明是2个逻辑CPU,虚拟方式为QEMU的方式,不需要专门专门查询虚拟方式。

# cat /proc/cpuinfo | grep physical | uniq -c
      4 physical id      : 0
      4 physical id      : 1

说明有2颗4核,也可能是2核4线程。

# getconf LONG_BIT
   32 

当前CPU运行在32bit模式下, 但不代表CPU不支持64bit

# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
8

结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit。

1.1.2.内存信息

以下测试基于甲骨文试用版VM.Standard2.2套餐。

# free -m
              total        used        free      shared  buff/cache   available
Mem:          29993         452       27725          40        1815       29213
Swap:          8191           0        8191

这个是最常见的查询物理内存(Mem)跟缓冲内存(Swap)的命令。

# cat /proc/meminfo
MemTotal:       30712844 kB
MemFree:        28393476 kB
MemAvailable:   29918080 kB
Buffers:            4152 kB
Cached:          1543140 kB
SwapCached:            0 kB
Active:           751736 kB
Inactive:        1002228 kB
Active(anon):     185676 kB
Inactive(anon):    62548 kB
Active(file):     566060 kB
Inactive(file):   939680 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       8388604 kB
SwapFree:        8388604 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        206712 kB
Mapped:            65240 kB
Shmem:             41552 kB
Slab:             311692 kB
SReclaimable:     230964 kB
SUnreclaim:        80728 kB
KernelStack:        2656 kB
PageTables:         6140 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    23745024 kB
Committed_AS:     588624 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       79408 kB
VmallocChunk:   34359652348 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      238372 kB
DirectMap2M:    15486976 kB
DirectMap1G:    17825792 kB

这个是查询内存详细信息的。

1.1.3.磁盘空间信息

以下测试基于甲骨文试用版VM.Standard2.2套餐。

# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        39G  2.6G   36G   7% /
devtmpfs         15G     0   15G   0% /dev
tmpfs            15G     0   15G   0% /dev/shm
tmpfs            15G   41M   15G   1% /run
tmpfs            15G     0   15G   0% /sys/fs/cgroup
/dev/sda1       512M   12M  501M   3% /boot/efi
tmpfs           3.0G     0  3.0G   0% /run/user/1000

以上为查询硬盘使用状态,算是一个比较直接的显示方式。

# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 50.0 GB, 50010783744 bytes, 97677312 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
Disk label type: gpt
Disk identifier: 117F31A3-C168-4DEE-ADC5-8625471536F


#         Start          End    Size  Type            Name
 1         2048      1050623    512M  EFI System      EFI System Partition
 2      1050624     17827839      8G  Linux swap
 3     17827840     97675263   38.1G  Microsoft basic

使用该条命令,主要是可以查询有多少(虚拟)物理磁盘接入到机器中,未挂载的机器也会显示在这个列表上。该显示不会因为硬盘的分区方式不同而显示不同。


# smartctl -A /dev/sda
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-3.10.0-957.27.2.el7.x86_64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===

使用smartctl命令不同的参数可以查询硬盘的不同的信息,这里我就不多做解释了。

# hdparm -t /dev/sda

以上命令可以查询硬盘插电时间,因为这个还需要安装相应的组件才可以执行,我这里就不详细演示了。
以上两条命令仅用于物理机或是KVM以及Xen的虚拟技术,OVZ无法执行该命令。另外这个/dev/sda是根据fdisk命令查询出来的硬盘参数来执行的。

1.1.4.操作系统信息

# uname -a
Linux instance-20191017-0625 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

该命令主要是查看Linux的内核命令。从上面的信息看,这个Linux用的是3.10的内核,也是CentOS 7的默认内核。

# cat /proc/version
Linux version 3.10.0-957.27.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Mon Jul 29 17:46:05 UTC 2019

这条命令其实查看Linux的内核相关信息的,比上一条命令更多的是可以看到gcc的版本号,也可以看到是Red Hat分支。不过从邮件地址可以看出来就是CentOS。

# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

这种方法只适合Redhat系的Linux。

# lsb_release -a
# cat /etc/issue

以上两条命令适用于大部分发行版的Linux用来查询发行版本。这两条命令在CentOS 6.5上通过,但是CentOS 7不识别这两条命令。

1.1.5.其他信息

# dmidecode | grep "Product Name"
        Product Name: Standard PC (i440FX + PIIX, 1996)

查看机器型号

# dmesg | grep -i eth
[    0.997727] vmxnet3 0000:03:00.0 eth0: NIC Link is Up 10000 Mbps
[    1.001686] vmxnet3 0000:03:00.0 ens160: renamed from eth0
# dmesg | grep -i ens
[    0.959461] ACPI: Added _OSI(3.0 _SCP Extensions)
[    3.679538] sd 2:0:0:1: [sda] Mode Sense: 2b 00 10 08
[    3.787744] IPv6: ADDRCONF(NETDEV_UP): ens3: link is not ready
[    4.627636] IPv6: ADDRCONF(NETDEV_CHANGE): ens3: link becomes ready
[    8.409527] SELinux:  8 users, 14 roles, 5031 types, 316 bools, 1 sens, 1024 cats
[   29.045147] SELinux:  8 users, 14 roles, 5031 types, 316 bools, 1 sens, 1024 cats

查询网卡信息,因为网卡的名称不同命令有所不同。第一个命令是Ubuntu 18.04的结果,第二个是CentOS 7的结果,网卡的名称可以通过ifconfig查看。

1.2.网速测试

因为网速测试大部分都是连接到speedtest.net去测试,所以网速测试我们基本上只是用wget测试国内外的网站下载。

#  wget http://cachefly.cachefly.net/100mb.test
#  wget http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe

当然如果有需要的用户也可以安装speedtest-cli程序去测试,这个也是很多测试脚本在用的。

# yum install python-pip –y
# pip install speedtest-cli

参见https://pypi.org/project/speedtest-cli/
或者

# wget https://raw.github.com/sivel/speedtest-cli/master/speedtest.py
# chmod a+rx speedtest.py
# mv speedtest.py /usr/bin/speedtest-cli
# chown root:root /usr/bin/speedtest-cli
# speedtest-cli

1.3.磁盘测试

# dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
4096+0 records in
4096+0 records out
268435456 bytes (268 MB) copied, 6.4829 s, 41.4 MB/s

以上dd命令用于测试硬盘读写速度,上面的命令是初始化一个268MB的文件。其中用时越快的,证明硬盘I/O读写能力越高。不过该命令仅适用于机械硬盘或是SSD做缓存的机械硬盘,有一部分资料说dd命令检测SSD硬盘的读写速度不准确。

1.4.路由追踪测试

在测试机上使用traceroute命令可以查看从测试机上到目的目标上

# traceroute baidu.com
traceroute to baidu.com (220.181.38.148), 30 hops max, 60 byte packets
 1  140.91.214.6 (140.91.214.6)  0.117 ms 140.91.214.3 (140.91.214.3)  0.083 ms 140.91.214.6 (140.91.214.6)  0.086 ms
 2  115.92.252.66 (115.92.252.66)  1.394 ms  1.373 ms  1.358 ms
 3  115.92.252.65 (115.92.252.65)  1.075 ms  1.240 ms  1.253 ms
 4  1.213.151.113 (1.213.151.113)  1.144 ms  0.994 ms  1.161 ms
 5  1.208.174.93 (1.208.174.93)  2.552 ms 1.213.152.37 (1.213.152.37)  1.366 ms 1.208.104.57 (1.208.104.57)  1.805 ms
 6  1.208.147.118 (1.208.147.118)  2.043 ms  1.900 ms 1.208.146.118 (1.208.146.118)  1.812 ms
 7  211.40.6.158 (211.40.6.158)  25.237 ms 202.97.5.113 (202.97.5.113)  96.008 ms  95.997 ms
 8  202.97.12.46 (202.97.12.46)  95.513 ms 202.97.70.21 (202.97.70.21)  26.382 ms  26.359 ms
 9  202.97.94.137 (202.97.94.137)  107.839 ms 202.97.94.149 (202.97.94.149)  104.840 ms  104.863 ms
10  202.97.79.166 (202.97.79.166)  127.347 ms 202.97.57.158 (202.97.57.158)  42.017 ms 202.97.79.174 (202.97.79.174)  116.767 ms
11  202.97.34.153 (202.97.34.153)  93.751 ms 202.97.54.13 (202.97.54.13)  124.131 ms 202.97.79.197 (202.97.79.197)  114.649 ms
12  * 218.30.28.30 (218.30.28.30)  63.498 ms *
13  36.110.246.201 (36.110.246.201)  65.738 ms * *
14  220.181.16.86 (220.181.16.86)  72.870 ms 220.181.17.150 (220.181.17.150)  119.422 ms 220.181.182.178 (220.181.182.178)  119.327 ms
15  * 220.181.182.166 (220.181.182.166)  72.147 ms 220.181.17.94 (220.181.17.94)  73.094 ms
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

如果提示-bash: traceroute: command not found请自行安装相应工具。

#yum install traceroute 

如果使用本地Windows电脑测试到测试机的路由命令则为:

#tracert 8.8.8.8 

当然也可以使用https://ping.pe/、http://ping.chinaz.com/、http://tool.chinaz.com/speedtest.aspx来进行测试

1.5.其他测试

看到LemonBench上写的,他的脚本还支持Spoofer测试 。这个测试我没有接触过,有兴趣的可以看到这篇文章写的一些基础解释。http://www.dataguru.cn/thread-487757-1-1.html

2.常见的测试脚本

2.1.Bench

wget -qO- bench.sh | bash
#或者
curl -Lso- bench.sh | bash

同样,

wget freevps.us/downloads/bench.sh -O - -o /dev/null|bash
#或者
curl -Lso- freevps.us/downloads/bench.sh | bash 

Bench脚本是最基本的一个测试,Bench应该是来源于Apache Bench测试,也就是web性能测试。这个测试脚本还支持IPv6的测试,因为我这里不支持IPv6,所以只有IPv4的测试。
该代码来源于秋水逸冰。freevps.us网站的还是老代码,bench.sh网站则是有颜色显示的代码了,一些功能项也不一样。

秋水逸冰的详细网址为https://teddysun.com/444.html。

《VPS服务器常见测试命令及脚本》

《VPS服务器常见测试命令及脚本》

以上两个图,第一个图是秋水逸冰的代码,第二个图是freevps.us的代码。

2.2.UnixBench

wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
chmod +x unixbench.sh
./unixbench.sh
#或者
wget http://www.CTOHome.com/linux-vps-pack/unixbench.sh;sh ./unixbench.sh

UnixBench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linux系统主机的性能,简称UB。Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。
第一个网址依然还是秋水逸冰提供的,截至目前用的是UnixBench5.1.3,第二个CTOHome用的还是UnixBench5.1.2。以下测试截图用的是CTOHome测试代码完成的。

秋水逸冰的详细介绍网址为https://teddysun.com/245.html,CTOHome代码的详细介绍网址为http://www.ctohome.com/FuWuQi/c5/172.html。

《VPS服务器常见测试命令及脚本》

2.3.SuperBench

wget -qO- git.io/superbench.sh | bash
#或者
wget -qO- --no-check-certificate https://raw.githubusercontent.com/oooldking/script/master/superbench.sh | bash 

SuperBench是老鬼博客在秋水逸冰Bench基础上发展出来的,相对于Bench,除基础信息保留以外,也做了很多的改进:增加了在线时间、TCP加速方式、ASN、主机商、主机位置的检测,同时也将Bench的国外节点大部分更换为国内节点,也有speedtest测速结果分享等功能,更适合国内用户。
该测试代码的介绍有新旧两个版本。https://www.oldking.net/350.html是旧版本,https://www.oldking.net/599.html是新版本。该测试代码支持带参数测试,详细介绍请查看作者的网站。

《VPS服务器常见测试命令及脚本》

2.4.Zbench

#中文版
wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench-CN.sh && bash ZBench-CN.sh
#英文版
wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench.sh && bash ZBench.sh

Zbench是一款支持全中文界面的脚本程序,专门适合国人测试Linux服务器的,补单加强了到中国的带宽和延迟测试。而且还整合了国内外的多个节点测速,当然也有英文版,如果系统中不支持中文的话可以使用英文版查看。脚本由主机博客和kirito,基于Oldking大佬的 SuperBench,然后加入Ping以及路由测试的功能,还能生成html测评报告,用来分享给他人。先要输入你的服务器提供商,然后要确认你所在的IP地址,输入y确认,就开始安装依赖程序及跑脚本了。html测评报告范本请参考https://www.zhujiboke.com/zbench-example.html。
项目地址:https://github.com/FunctionClub/ZBench

《VPS服务器常见测试命令及脚本》

2.5.LemonBench

LemonBench工具(别名LBench、柠檬Bench),是一款针对Linux服务器设计的服务器性能测试工具。通过综合测试,可以快速评估服务器的综合性能,为使用者提供服务器硬件配置信息。该测试代码来源于极光星空,测试内容包括系统信息收集、网络信息收集、流媒体解锁测试 (Beta)、系统性能测试、Speedtest网速测试、路由追踪测试 (回程测试)等,测试结果相对于SuperBench,结果更加准确,支持将测试结果的txt文件保存在本地外同时也支持将结果默认分享到外部网址中。详细介绍请访问https://blog.ilemonrain.com/linux/LemonBench.html。我本次的详细测试结果分享在https://paste.ubuntu.com/p/qd3pg48cb7/,结果默认2年,保存至2020年10月30日。

LemonBench目前涵盖了如下测试:

  • 服务器基础信息?(CPU信息/内存信息/Swap信息/磁盘空间信息/网络信息等)
  • 流媒体解锁测试?(目前支持HBO Now/动画疯/B站港澳台/B站台湾限定)
  • 系统性能测试 (CPU/内存/磁盘)
  • Speedtest网速测试?(本地到最近源及国内各地域不同线路的网速)
  • 路由追踪测试?(追踪到国内和海外不同线路的路由信息)

快速测试

###curl工具###
curl -fsSL https://ilemonrain.com/download/shell/LemonBench.sh | bash -s fast
###wget工具###
wget -qO- https://ilemonrain.com/download/shell/LemonBench.sh | bash -s fasth 

完整测试

###curl工具###
curl -fsSL https://ilemonrain.com/download/shell/LemonBench.sh | bash -s full
###wget工具###
wget -qO- https://ilemonrain.com/download/shell/LemonBench.sh | bash -s full 

《VPS服务器常见测试命令及脚本》

2.6.uPing

uPing是一个24小时监测VPS延迟的工具,为了保证测试结果,建议测试前先安装Screen,在screen下进行测试,以免造成服务器断线后测试结果失败。

wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/uPing/master/uping.py 

《VPS服务器常见测试命令及脚本》

2.7.内存检测脚本

检测VPS真实可分配内存的小工具,适用于检测VPS超售情况。本程序检测的可分配内存指的是用户使用时最大能占用的内存量。

#CentOS / RHEL
yum install wget -y
yum groupinstall "Development Tools" -y
wget https://raw.githubusercontent.com/FunctionClub/Memtester/master/memtester.cpp
gcc -l stdc++ memtester.cpp
./a.out
#Ubuntu / Debian
apt-get update
apt-get install wget build-essential -y 
wget https://raw.githubusercontent.com/FunctionClub/Memtester/master/memtester.cpp
gcc -l stdc++ memtester.cpp
./a.out 

测试结果类似如下,因为我前面数据量比较大,我就不详细贴了。

 # ...
37320MB allocated
37330MB allocated
37340MB allocated
37350MB allocated
37360MB allocated
37370MB allocated
37380MB allocated
37390MB allocated
37400MB allocated
37410MB allocated
37420MB allocated
37430MB allocated
37440MB allocated
37450MB allocated
Killed
#

2.8.回程路由测试

从你的 Linux(X86/ARM)/Mac/BSD 系统环境下发起 traceroute 请求,附带链路可视化,兼容性更好,支持 JSON 格式

 
#下载
https://cdn.ipip.net/17mon/besttrace4linux.zip
#解压
unzip besttrace4linux.zip
#使用
./besttrace -q 1 202.102.192.68
# 202.102.192.68为安徽电信的DNS地址,用户可以更换为自己的地址

测试结果为:

 # ./besttrace -q 1 202.102.192.68
traceroute to 202.102.192.68 (202.102.192.68), 30 hops max, 60 byte packets
 1  140.91.214.7  0.19 ms  AS31898  韩国 首尔 oracle.com
 2  115.92.252.66  0.64 ms  AS3786  韩国 京畿道 uplus.co.kr
 3  115.92.252.65  1.29 ms  AS3786  韩国 京畿道 uplus.co.kr
 4  1.213.150.113  1.34 ms  AS3786  韩国 首尔 uplus.co.kr
 5  1.208.144.153  1.89 ms  AS3786  韩国 首尔 uplus.co.kr
 6  1.208.147.118  1.98 ms  AS3786  韩国 首尔 uplus.co.kr
 7  1.213.105.46  25.31 ms  AS3786  中国 上海 uplus.co.kr
 8  202.97.70.17  24.60 ms  *  中国 上海 电信
 9  202.97.33.189  25.76 ms  AS4134  中国 上海 电信
10  202.97.57.26  42.78 ms  AS4134  中国 上海 电信
11  202.97.96.182  36.50 ms  AS4134  中国 安徽 合肥 电信
12  202.97.18.225  109.27 ms  AS4134  中国 安徽 合肥 电信
13  cache2.ahhfptt.net.cn (202.102.192.68)  46.86 ms  AS4134  中国 安徽 合肥 电信
#

 

另外跟大家分享一下看到的新闻——Linux 引入自动化测试平台 KernelCI:https://www.cnbeta.com/articles/tech/904413.htm

参考网址:

Leonn的博客/LemonBench: Linux服务器综合测试工具? https://liyuans.com/2019/01/lemonbench.html

羊毛党之家/VPS常用测试脚本合集? https://yangmaodang.org/5948.html

51Testing软件测试网/Linux查看CPU信息、机器型号等硬件信息 http://www.51testing.com/html/38/225738-210333.html