我们买国外VPS服务器测试网络通常会用到speedtest,speedtest默认是测试到最近的节点,那么到国内速度如何呢?虽然可以指定服务器编号,但是一个个测试还是比较麻烦的,这里推荐一个脚本整合了几个国内的测试点,还是比较方便的。Superspeed已更新为SuperBench.sh,整合了teddysun 大佬的 bench.sh 脚本。

更新

  1. 新增 Virt 检测服务器类型参数,常见 openvz,kvm,独服都能检测出来
  2. 新增独服通电时间检测。
  3. 修复,speedtest 延迟飘逸,飘逸延迟统一改为 000.000 ms
  4. 修改 I/O 测试块大小
  5. 统一字符为英文,解决乱码问题

一、使用方法

1、直接在线下载安装测试

wget -qO- git.io/superbench_old.sh | bash

 

2、也可以复制这个脚本内粘贴然后保存

#!/usr/bin/env bash
#
# Description: Auto test download & I/O speed & network to China script
#
# Copyright (C) 2017 - 2017 Oldking <oooldking@gmail.com>
#
# Thanks: Bench.sh <i@teddysun.com>
#
# URL: https://www.oldking.net/350.html
# # Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
SKYBLUE='\033[0;36m'
PLAIN='\033[0m' # check release
if [ -f /etc/redhat-release ]; then
release="centos"
elif cat /etc/issue | grep -Eqi "debian"; then
release="debian"
elif cat /etc/issue | grep -Eqi "ubuntu"; then
release="ubuntu"
elif cat /etc/issue | grep -Eqi "centos|red hat|redhat"; then
release="centos"
elif cat /proc/version | grep -Eqi "debian"; then
release="debian"
elif cat /proc/version | grep -Eqi "ubuntu"; then
release="ubuntu"
elif cat /proc/version | grep -Eqi "centos|red hat|redhat"; then
release="centos"
fi # check root
[[ $EUID -ne 0 ]] && echo -e "${RED}Error:${PLAIN} This script must be run as root!" && exit 1 # check python
if [ ! -e '/usr/bin/python' ]; then
#echo -e
#read -p "${RED}Error:${PLAIN} python is not install. You must be install python command at first.\nDo you want to install? [y/n]" is_install
#if [[ ${is_install} == "y" || ${is_install} == "Y" ]]; then
if [ "${release}" == "centos" ]; then
yum update > /dev/null 2>&1
yum -y install python
else
apt-get update > /dev/null 2>&1
apt-get -y install python
fi
#else
# exit
#fi fi # check wget
if [ ! -e '/usr/bin/wget' ]; then
#echo -e
#read -p "${RED}Error:${PLAIN} wget is not install. You must be install wget command at first.\nDo you want to install? [y/n]" is_install
#if [[ ${is_install} == "y" || ${is_install} == "Y" ]]; then
if [ "${release}" == "centos" ]; then
yum update > /dev/null 2>&1
yum -y install wget
else
apt-get update > /dev/null 2>&1
apt-get -y install wget
fi
#else
# exit
#fi
fi get_opsy() {
[ -f /etc/redhat-release ] && awk '{print ($1,$3~/^[0-9]/?$3:$4)}' /etc/redhat-release && return
[ -f /etc/os-release ] && awk -F'[= "]' '/PRETTY_NAME/{print $3,$4,$5}' /etc/os-release && return
[ -f /etc/lsb-release ] && awk -F'[="]+' '/DESCRIPTION/{print $2}' /etc/lsb-release && return
} next() {
printf "%-70s\n" "-" | sed 's/\s/-/g'
} speed_test(){
if [[ $1 == '' ]]; then
temp=$(python /tmp/speedtest.py --share 2>&1)
is_down=$(echo "$temp" | grep 'Download')
if [[ ${is_down} ]]; then
local REDownload=$(echo "$temp" | awk -F ':' '/Download/{print $2}')
local reupload=$(echo "$temp" | awk -F ':' '/Upload/{print $2}')
local relatency=$(echo "$temp" | awk -F ':' '/Hosted/{print $2}')
local nodeName=$2 printf "${YELLOW}%-17s${GREEN}%-18s${RED}%-20s${SKYBLUE}%-12s${PLAIN}\n" "${nodeName}" "${reupload}" "${REDownload}" "${relatency}"
else
local cerror="ERROR"
fi
else
temp=$(python /tmp/speedtest.py --server $1 --share 2>&1)
is_down=$(echo "$temp" | grep 'Download')
if [[ ${is_down} ]]; then
local REDownload=$(echo "$temp" | awk -F ':' '/Download/{print $2}')
local reupload=$(echo "$temp" | awk -F ':' '/Upload/{print $2}')
local relatency=$(echo "$temp" | awk -F ':' '/Hosted/{print $2}')
temp=$(echo "$relatency" | awk -F '.' '{print $1}')
if [[ ${temp} -gt 1000 ]]; then
relatency=" 000.000 ms"
fi
local nodeName=$2 printf "${YELLOW}%-17s${GREEN}%-18s${RED}%-20s${SKYBLUE}%-12s${PLAIN}\n" "${nodeName}" "${reupload}" "${REDownload}" "${relatency}"
else
local cerror="ERROR"
fi
fi
} speed() {
# install speedtest
if [ ! -e '/tmp/speedtest.py' ]; then
wget --no-check-certificate -P /tmp https://raw.github.com/sivel/speedtest-cli/master/speedtest.py > /dev/null 2>&1
fi
chmod a+rx /tmp/speedtest.py speed_test '' 'Normal Node'
speed_test '6435' 'Xiangyang CT'
speed_test '7509' 'Kunming CT'
speed_test '3633' 'Shanghai CT'
speed_test '4624' 'Chengdu CT'
speed_test '5017' 'Shenyang CU'
speed_test '4863' "Xi'an CU"
speed_test '5083' 'Shanghai CU'
speed_test '5726' 'Chongqing CU'
speed_test '5292' "Xi'an CM"
speed_test '16314' 'Shandong CM'
speed_test '6715' 'Ningbo CM'
speed_test '4575' 'Chengdu CM' rm -rf /tmp/speedtest.py
} io_test() {
(LANG=C dd if=/dev/zero of=test_$$ bs=$1 count=$2 conv=fdatasync && rm -f test_$$ ) 2>&1 | awk -F, '{io=$NF} END { print io}' | sed 's/^[ \t]*//;s/[ \t]*$//'
} calc_disk() {
local total_size=0
local array=$@
for size in ${array[@]}
do
[ "${size}" == "0" ] && size_t=0 || size_t=`echo ${size:0:${#size}-1}`
[ "`echo ${size:(-1)}`" == "K" ] && size=0
[ "`echo ${size:(-1)}`" == "M" ] && size=$( awk 'BEGIN{printf "%.1f", '$size_t' / 1024}' )
[ "`echo ${size:(-1)}`" == "T" ] && size=$( awk 'BEGIN{printf "%.1f", '$size_t' * 1024}' )
[ "`echo ${size:(-1)}`" == "G" ] && size=${size_t}
total_size=$( awk 'BEGIN{printf "%.1f", '$total_size' + '$size'}' )
done
echo ${total_size}
} power_time() { result=$(smartctl -a $(result=$(cat /proc/mounts) && echo $(echo "$result" | awk '/data=ordered/{print $1}') | awk '{print $1}') 2>&1) && power_time=$(echo "$result" | awk '/Power_On/{print $10}') && echo "$power_time"
} install_smart() {
# install smartctl
if [ ! -e '/usr/sbin/smartctl' ]; then
if [ "${release}" == "centos" ]; then
yum update > /dev/null 2>&1
yum -y install smartmontools > /dev/null 2>&1
else
apt-get update > /dev/null 2>&1
apt-get -y install smartmontools > /dev/null 2>&1
fi
fi
} start=$(date +%s) cname=$( awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//' )
cores=$( awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo )
freq=$( awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//' )
tram=$( free -m | awk '/Mem/ {print $2}' )
uram=$( free -m | awk '/Mem/ {print $3}' )
swap=$( free -m | awk '/Swap/ {print $2}' )
uswap=$( free -m | awk '/Swap/ {print $3}' )
up=$( awk '{a=$1/86400;b=($1%86400)/3600;c=($1%3600)/60} {printf("%d days %d hour %d min\n",a,b,c)}' /proc/uptime )
load=$( w | head -1 | awk -F'load average:' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//' )
opsy=$( get_opsy )
arch=$( uname -m )
lbit=$( getconf LONG_BIT )
kern=$( uname -r )
ipv6=$( wget -qO- -t1 -T2 ipv6.icanhazip.com )
disk_size1=($( LANG=C df -hPl | grep -wvE '\-|none|tmpfs|devtmpfs|by-uuid|chroot|Filesystem' | awk '{print $2}' ))
disk_size2=($( LANG=C df -hPl | grep -wvE '\-|none|tmpfs|devtmpfs|by-uuid|chroot|Filesystem' | awk '{print $3}' ))
disk_total_size=$( calc_disk ${disk_size1[@]} )
disk_used_size=$( calc_disk ${disk_size2[@]} )
ptime=$(power_time) clear
next
echo -e "CPU model : ${SKYBLUE}$cname${PLAIN}"
echo -e "Number of cores : ${SKYBLUE}$cores${PLAIN}"
echo -e "CPU frequency : ${SKYBLUE}$freq MHz${PLAIN}"
echo -e "Total size of Disk : ${SKYBLUE}$disk_total_size GB ($disk_used_size GB Used)${PLAIN}"
echo -e "Total amount of Mem : ${SKYBLUE}$tram MB ($uram MB Used)${PLAIN}"
echo -e "Total amount of Swap : ${SKYBLUE}$swap MB ($uswap MB Used)${PLAIN}"
echo -e "System uptime : ${SKYBLUE}$up${PLAIN}"
echo -e "Load average : ${SKYBLUE}$load${PLAIN}"
echo -e "OS : ${SKYBLUE}$opsy${PLAIN}"
echo -e "Arch : ${SKYBLUE}$arch ($lbit Bit)${PLAIN}"
echo -e "Kernel : ${SKYBLUE}$kern${PLAIN}"
echo -ne "Virt : " # install virt-what
if [ ! -e '/usr/sbin/virt-what' ]; then
if [ "${release}" == "centos" ]; then
yum update > /dev/null 2>&1
yum -y install virt-what > /dev/null 2>&1
else
apt-get update > /dev/null 2>&1
apt-get -y install virt-what > /dev/null 2>&1
fi
fi
virtua=$(virt-what) 2>/dev/null if [[ ${virtua} ]]; then
echo -e "${SKYBLUE}$virtua${PLAIN}"
else
echo -e "${SKYBLUE}No Virt${PLAIN}"
echo -ne "Power time of disk : "
install_smart
echo -e "${SKYBLUE}$ptime Hours${PLAIN}"
fi
next
echo -n "I/O speed( 32M ) : "
io1=$( io_test 32k 1k )
echo -e "${YELLOW}$io1${PLAIN}"
echo -n "I/O speed( 256M ) : "
io2=$( io_test 64k 4k )
echo -e "${YELLOW}$io2${PLAIN}"
echo -n "I/O speed( 2G ) : "
io3=$( io_test 64k 32k )
echo -e "${YELLOW}$io3${PLAIN}"
ioraw1=$( echo $io1 | awk 'NR==1 {print $1}' )
[ "`echo $io1 | awk 'NR==1 {print $2}'`" == "GB/s" ] && ioraw1=$( awk 'BEGIN{print '$ioraw1' * 1024}' )
ioraw2=$( echo $io2 | awk 'NR==1 {print $1}' )
[ "`echo $io2 | awk 'NR==1 {print $2}'`" == "GB/s" ] && ioraw2=$( awk 'BEGIN{print '$ioraw2' * 1024}' )
ioraw3=$( echo $io3 | awk 'NR==1 {print $1}' )
[ "`echo $io3 | awk 'NR==1 {print $2}'`" == "GB/s" ] && ioraw3=$( awk 'BEGIN{print '$ioraw3' * 1024}' )
ioall=$( awk 'BEGIN{print '$ioraw1' + '$ioraw2' + '$ioraw3'}' )
ioavg=$( awk 'BEGIN{printf "%.1f", '$ioall' / 3}' )
echo -e "Average I/O speed : ${YELLOW}$ioavg MB/s${PLAIN}"
next
printf "%-18s%-18s%-20s%-12s\n" "Node Name" "Upload Speed" "Download Speed" "Latency"
speed && next
end=$(date +%s)
time=$(( $end - $start ))
if [[ $time -gt 60 ]]; then
min=$(expr $time / 60)
sec=$(expr $time % 60)
echo -ne "Total time : ${min} min ${sec} sec"
else
echo -ne "Total time : ${time} sec"
fi
echo -ne "\nCurrent time : "
echo $(date +%Y-%m-%d" "%H:%M:%S)
echo "Finished!"

二、测试结果

备注:

此 bench 默认从官方源安装 Python (一般情况下系统默认自带了Python),除了结果之外其他产生文件均在测试后删除,中途打断测试也会清理垃圾文件,对系统无更改,无残留,适合洁癖者使用。

原文地址:https://www.oldking.net/350.html

我们买国外VPS服务器测试网络通常会用到speedtest,speedtest默认是测试到最近的节点,那么到国内速度如何呢?虽然可以指定服务器编号,但是一个个测试还是比较麻烦的,这里推荐一个脚本整合了几个国内的测试点,还是比较方便的。Superspeed已更新为SuperBench.sh,整合了teddysun 大佬的 bench.sh 脚本。

更新

  1. 新增 Virt 检测服务器类型参数,常见 openvz,kvm,独服都能检测出来
  2. 新增独服通电时间检测。
  3. 修复,speedtest 延迟飘逸,飘逸延迟统一改为 000.000 ms
  4. 修改 I/O 测试块大小
  5. 统一字符为英文,解决乱码问题

一、使用方法

  1. wget -qO---no-check-certificate https://raw.githubusercontent.com/oooldking/script/master/superbench.sh | bash
wget -qO- --no-check-certificate https://raw.githubusercontent.com/oooldking/script/master/superbench.sh | bash

二、测试结果

一键测试VPS到国内速度脚本 SuperBench.sh,以及一键验收云主机脚本的更多相关文章

  1. 真假云主机,VPS资料集合

    资料来源: http://www.west263.com/services/CloudHost/pk.asp?ads=baidu912 用"云里雾里"形容中小企业用户对云计算的理解 ...

  2. 云主机和vps的区别

    云主机和vps的区别   近年来,IT行业开始热衷于各种云概念,而云主机就是其中之一,并且有越来越热之势.对普通用户而言,可能不太清楚云主机和VPS的区别,下面我们就来说说云主机和VPS到底有什么不同 ...

  3. 虚拟机、云主机、VPS 三者之间的区别

    当我们想部署网站的时候,经常会听到vps.云主机.虚拟机等关键字,那么你知道这几者之间的区别吗?本文就讲解一下VPS.云主机.虚拟机之间的区别. 什么是VPS VPS 是Virtual Private ...

  4. VPS一键测试脚本 / 自带结果导出

    脚本命令 一下脚本可能卡住,运行时间长,建议在screen中运行. 1.秋水逸冰大佬的Bench.sh脚本 特点:用时较短,对系统测试全面,英文:但缺少国内节点测速 有趣的是,bench.sh既是脚本 ...

  5. 优化hexo访问速度-将hexo部署到云主机VPS

    写在开始 一开始将自己hexo部署到github,结果发现打开页面速度有点慢,然后又将其同时部署到coding,实现双线路访问,国内解析记录到coding,国外解析到github,这样确实网站的速度能 ...

  6. 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解

    注意域名,动静分离的网站,只对静态文件的域名做了cdn 怎么看网站有没开启CDN? 要看一个网站是否开启CDN,方法很简单,只要在不同的地区ping网址就可以,比如在山东济南ping www.jb51 ...

  7. 一键备份脚本 backup.sh

    做网站最重要的是什么?数据!数据,是网站之本,备份,是每一个站长都应该重视的事情.但同时,备份也是一件繁琐和重复的事情.所以,这些事情,肯定能做到自动化的.下面来介绍一下这个一键备份脚本 backup ...

  8. 【转载】]基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程 介绍、安装准备、安装、config文件以及运行脚本介绍

    https://www.codetd.com/article/1137423 <版权声明:本文为博主原创文章,未经博主允许不得转载> 本次利用SPECCPU2006测试工具来进行Intel ...

  9. 虚拟主机、VPS、云主机以及独立服务器的关系

    很多人对虚拟主机.VPS.云主机以及独立服务器的关系不是很了解,我在这里给大家简单分析一下. 先总结一下: (1)虚拟主机是把一台物理机器分割成很多的小空间,这些空间共享操作系统的资源,比如:同一个操 ...

随机推荐

  1. Redis基础篇(二)高性能IO模型

    我们经常听到说Redis是单线程的,也会有疑问:为什么单线程的Redis能那么快? 这里要明白一点:Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对 ...

  2. SQL语句中case,when,then的用法

    用法如下bai: 复制代码 SELECT s.s_id, s.s_name, s.s_sex, CASE WHENs.s_sex='1'THEN'男' WHENs.s_sex='2'THEN'女' E ...

  3. 后端Long类型传到前端精度丢失的正确解决方式

    原因:前端js对Long类型支持的精度不够,导致后端使用的Long传到前端丢失精度,比如现在分布式id生成算法"雪花算法"在使用中就会出现问题. 解决方式: 1.后端的Long类型 ...

  4. 多维数组遍历.php

    $a=array('fruits'=>array('a'=>'orange','b'=>'grape','c'=>'apple'),     'numbers'=>arr ...

  5. ArrayList的删除姿势你都知道了吗

    引言 前几天有个读者由于看了<ArrayList哪种遍历效率最好,你真的弄明白了吗?>问了个问题普通for循环ArrayList为什么不能删除连续重复的两个元素?其实这个描述是不正确的.正 ...

  6. 当Thymeleaf遇到向js中传值的操作

    在使用Thymeleaf的时候.关于一些点击操作非常头疼.往往需要向JS里面传递各种东西. 然而,在用Thymeleaf的时候.js操作需要拼接语句.但是又不好拼接. 关于一些操作,一般也是在表格中. ...

  7. Redis 设计与实现 8:五大数据类型之哈希

    哈希对象的编码有两种:ziplist.hashtable. 编码一:ziplist ziplist 已经是我们的老朋友了,它一出现,那肯定就是为了节省内存啦.那么哈希对象是怎么用 ziplist 存储 ...

  8. Java GC --- Java堆内存

    Java堆是被所有线程共享的一块内存区域,所有对象实例和数组都在堆上进行内存分配.为了进行高效的垃圾回收,虚拟机把堆内存划分成: 1. 新生代(Young Generation): 由 Eden 与 ...

  9. uber_go_guide解析(三)(规范)

    前言 一主要讲的是容易忽略的错误,可能在build时都不会体现出来但是在使用时出现问题 二主要讲的是一些可以提高代码效率的用法 本篇则讲解一些规范,不是强制的但是根据规范会提高代码的可读性, 减少BU ...

  10. jxl解析多个excel工作表-java代码

    @Override public ResultBean txImportDqKpi(String filePath) { ResultBean rb = new ResultBean(); int s ...