zoukankan      html  css  js  c++  java
  • 服务器性能自动化测试脚本

    1.自动化测试脚本unixbench

    yum install -y wget
    wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
    chmod +x unixbench.sh
    ./unixbench.sh

    115.231.102.80:

    Double-Precision Whetstone 17086.1 MWIPS (10.0 s, 7 samples)
    Execl Throughput 14392.7 lps (29.9 s, 2 samples)
    File Copy 1024 bufsize 2000 maxblocks 476888.5 KBps (30.0 s, 2 samples)
    File Copy 256 bufsize 500 maxblocks 136850.5 KBps (30.0 s, 2 samples)
    File Copy 4096 bufsize 8000 maxblocks 983756.4 KBps (30.0 s, 2 samples)
    Pipe Throughput 6399569.2 lps (10.0 s, 7 samples)
    Pipe-based Context Switching 1416599.5 lps (10.0 s, 7 samples)
    Process Creation 30040.1 lps (30.0 s, 2 samples)
    Shell Scripts (1 concurrent) 14900.7 lpm (60.0 s, 2 samples)
    Shell Scripts (8 concurrent) 2484.1 lpm (60.1 s, 2 samples)
    System Call Overhead 2247922.5 lps (10.0 s, 7 samples)

    System Benchmarks Index Values BASELINE RESULT INDEX
    Dhrystone 2 using register variables 116700.0 152391926.4 13058.4
    Double-Precision Whetstone 55.0 17086.1 3106.6
    Execl Throughput 43.0 14392.7 3347.1
    File Copy 1024 bufsize 2000 maxblocks 3960.0 476888.5 1204.3
    File Copy 256 bufsize 500 maxblocks 1655.0 136850.5 826.9
    File Copy 4096 bufsize 8000 maxblocks 5800.0 983756.4 1696.1
    Pipe Throughput 12440.0 6399569.2 5144.3
    Pipe-based Context Switching 4000.0 1416599.5 3541.5
    Process Creation 126.0 30040.1 2384.1
    Shell Scripts (1 concurrent) 42.4 14900.7 3514.3
    Shell Scripts (8 concurrent) 6.0 2484.1 4140.2
    System Call Overhead 15000.0 2247922.5 1498.6
    ========
    System Benchmarks Index Score 2784.5

    ======= Script description and score comparison completed! =======


    ********

    CPU
    [root@ecloud log]# sysbench --test=cpu --num-threads=500 --cpu-max-prime=2000 run
    WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
    WARNING: --num-threads is deprecated, use --threads instead
    sysbench 1.0.6 (using system LuaJIT 2.0.4)

    Running the test with following options:
    Number of threads: 500
    Initializing random number generator from current time


    Prime numbers limit: 2000

    Initializing worker threads...

    Threads started!


    General statistics:
    total time: 10.0111s
    total number of events: 279414

    Latency (ms):
    min: 0.14
    avg: 14.11
    max: 3849.15
    95th percentile: 0.15
    sum: 3942001.48

    Threads fairness:
    events (avg/stddev): 558.8280/159.04
    execution time (avg/stddev): 7.8840/1.41

    2.sysbench测试工具

    [root@hd1_live_video_test12 ~]# sysbench --test=cpu --num-threads=500 --cpu-max-prime=2000 run
    WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
    WARNING: --num-threads is deprecated, use --threads instead
    sysbench 1.0.6 (using system LuaJIT 2.0.4)

    Running the test with following options:
    Number of threads: 500
    Initializing random number generator from current time


    Prime numbers limit: 2000

    Initializing worker threads...

    Threads started!


    General statistics:
    total time: 10.0298s
    total number of events: 146550

    Latency (ms):
    min: 0.10
    avg: 31.56
    max: 2434.14
    95th percentile: 0.19
    sum: 4625765.20

    Threads fairness:
    events (avg/stddev): 293.1000/20.06
    execution time (avg/stddev): 9.2515/0.46


    program


    [root@ecloud log]# sysbench --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run
    WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
    WARNING: --num-threads is deprecated, use --threads instead
    sysbench 1.0.6 (using system LuaJIT 2.0.4)

    Running the test with following options:
    Number of threads: 500
    Initializing random number generator from current time


    Initializing worker threads...

    Threads started!


    General statistics:
    total time: 10.0242s
    total number of events: 183556

    Latency (ms):
    min: 0.03
    avg: 27.27
    max: 505.66
    95th percentile: 121.08
    sum: 5005451.78

    Threads fairness:
    events (avg/stddev): 367.1120/33.10


    [root@hd1_live_video_test12 ~]# sysbench --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run
    WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
    WARNING: --num-threads is deprecated, use --threads instead
    sysbench 1.0.6 (using system LuaJIT 2.0.4)

    Running the test with following options:
    Number of threads: 500
    Initializing random number generator from current time


    Initializing worker threads...

    Threads started!


    General statistics:
    total time: 10.0351s
    total number of events: 180507

    Latency (ms):
    min: 0.00
    avg: 27.74
    max: 717.29
    95th percentile: 106.75
    sum: 5006797.73

    Threads fairness:
    events (avg/stddev): 361.0140/18.77
    execution time (avg/stddev): 10.0136/0.01

    测试磁盘IO:
    准备测试文件:
    sysbench --test=fileio --num-threads=16 --file-total-size=2G --file-test-mode=rndrw prepare


    [root@ecloud ~]# sysbench --test=fileio --num-threads=20 --file-total-size=2G --file-test-mode=rndrw run
    WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
    WARNING: --num-threads is deprecated, use --threads instead
    sysbench 1.0.6 (using system LuaJIT 2.0.4)

    Running the test with following options:
    Number of threads: 20
    Initializing random number generator from current time


    Extra file open flags: 0
    128 files, 16MiB each
    2GiB total file size
    Block size 16KiB
    Number of IO requests: 0
    Read/Write ratio for combined random IO test: 1.50
    Periodic FSYNC enabled, calling fsync() each 100 requests.
    Calling fsync() at the end of test, Enabled.
    Using synchronous I/O mode
    Doing random r/w test
    Initializing worker threads...

    Threads started!


    File operations:
    reads/s: 4372.96
    writes/s: 2915.30
    fsyncs/s: 9322.08

    Throughput:
    read, MiB/s: 68.33
    written, MiB/s: 45.55

    General statistics:
    total time: 10.0004s
    total number of events: 166143

    Latency (ms):
    min: 0.00
    avg: 1.20
    max: 95.72
    95th percentile: 3.43
    sum: 199829.97

    Threads fairness:
    events (avg/stddev): 8307.1500/361.33
    execution time (avg/stddev): 9.9915/0.00


    [root@hd1_live_video_test12 ~]# sysbench --test=fileio --num-threads=20 --file-total-size=2G --file-test-mode=rndrw run
    WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
    WARNING: --num-threads is deprecated, use --threads instead
    sysbench 1.0.6 (using system LuaJIT 2.0.4)

    Running the test with following options:
    Number of threads: 20
    Initializing random number generator from current time


    Extra file open flags: 0
    128 files, 16MiB each
    2GiB total file size
    Block size 16KiB
    Number of IO requests: 0
    Read/Write ratio for combined random IO test: 1.50
    Periodic FSYNC enabled, calling fsync() each 100 requests.
    Calling fsync() at the end of test, Enabled.
    Using synchronous I/O mode
    Doing random r/w test
    Initializing worker threads...

    Threads started!


    File operations:
    reads/s: 1762.77
    writes/s: 1175.51
    fsyncs/s: 3753.91

    Throughput:
    read, MiB/s: 27.54
    written, MiB/s: 18.37

    General statistics:
    total time: 10.0039s
    total number of events: 66961

    Latency (ms):
    min: 0.00
    avg: 2.99
    max: 96.62
    95th percentile: 8.28
    sum: 199961.64

    Threads fairness:
    events (avg/stddev): 3348.0500/129.33
    execution time (avg/stddev): 9.9981/0.00

    3.一键自动化测试脚本bench.sh

    总结一下 bench.sh 特点:
    1、显示当前测试的各种系统信息;
    2、取自世界多处的知名数据中心的测试点,下载测试比较全面;
    3、支持 IPv6 下载测速;
    4、IO 测试三次,并显示平均值。


    再配合 unixbench.sh 脚本测试,即可全面测试 VPS 的性能。

    使用方法:
    命令1:
    wget -qO- bench.sh | bash

    # ok
    curl -Lso- bench.sh | bash
    命令2:

    wget -qO- 86.re/bench.sh | bash

    curl -so- 86.re/bench.sh | bash

    备注:
    bench.sh 既是脚本名,同时又是域名。所以不要怀疑我写错了或者你看错了。

    一键测试脚本:

    #!/usr/bin/env bash
    #
    # Description: Auto test download & I/O speed script
    #
    #
    
    if  [ ! -e '/usr/bin/wget' ]; then
        echo "Error: wget command not found. You must be install wget command at first."
        exit 1
    fi
    
    # Colors
    RED='33[0;31m'
    GREEN='33[0;32m'
    YELLOW='33[0;33m'
    PLAIN='33[0m'
    
    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
    " "-" | sed 's/s/-/g'
    }
    
    speed_test() {
        local speedtest=$(wget -4O /dev/null -T300 $1 2>&1 | awk '//dev/null/ {speed=$3 $4} END {gsub(/(|)/,"",speed); print speed}')
        local ipaddress=$(ping -c1 -n `awk -F'/' '{print $3}' <<< $1` | awk -F'[()]' '{print $2;exit}')
        local nodeName=$2
        printf "${YELLOW}%-32s${GREEN}%-24s${RED}%-14s${PLAIN}
    " "${nodeName}" "${ipaddress}" "${speedtest}"
    }
    
    speed_test_v6() {
        local speedtest=$(wget -6O /dev/null -T300 $1 2>&1 | awk '//dev/null/ {speed=$3 $4} END {gsub(/(|)/,"",speed); print speed}')
        local ipaddress=$(ping6 -c1 -n `awk -F'/' '{print $3}' <<< $1` | awk -F'[()]' '{print $2;exit}')
        local nodeName=$2
        printf "${YELLOW}%-32s${GREEN}%-24s${RED}%-14s${PLAIN}
    " "${nodeName}" "${ipaddress}" "${speedtest}"
    }
    
    speed() {
        speed_test 'http://cachefly.cachefly.net/100mb.test' 'CacheFly'
        speed_test 'http://speedtest.tokyo.linode.com/100MB-tokyo.bin' 'Linode, Tokyo, JP'
        speed_test 'http://speedtest.singapore.linode.com/100MB-singapore.bin' 'Linode, Singapore, SG'
        speed_test 'http://speedtest.london.linode.com/100MB-london.bin' 'Linode, London, UK'
        speed_test 'http://speedtest.frankfurt.linode.com/100MB-frankfurt.bin' 'Linode, Frankfurt, DE'
        speed_test 'http://speedtest.fremont.linode.com/100MB-fremont.bin' 'Linode, Fremont, CA'
        speed_test 'http://speedtest.dal05.softlayer.com/downloads/test100.zip' 'Softlayer, Dallas, TX'
        speed_test 'http://speedtest.sea01.softlayer.com/downloads/test100.zip' 'Softlayer, Seattle, WA'
        speed_test 'http://speedtest.fra02.softlayer.com/downloads/test100.zip' 'Softlayer, Frankfurt, DE'
        speed_test 'http://speedtest.sng01.softlayer.com/downloads/test100.zip' 'Softlayer, Singapore, SG'
        speed_test 'http://speedtest.hkg02.softlayer.com/downloads/test100.zip' 'Softlayer, HongKong, CN'
    }
    
    speed_v6() {
        speed_test_v6 'http://speedtest.atlanta.linode.com/100MB-atlanta.bin' 'Linode, Atlanta, GA'
        speed_test_v6 'http://speedtest.dallas.linode.com/100MB-dallas.bin' 'Linode, Dallas, TX'
        speed_test_v6 'http://speedtest.newark.linode.com/100MB-newark.bin' 'Linode, Newark, NJ'
        speed_test_v6 'http://speedtest.singapore.linode.com/100MB-singapore.bin' 'Linode, Singapore, SG'
        speed_test_v6 'http://speedtest.tokyo.linode.com/100MB-tokyo.bin' 'Linode, Tokyo, JP'
        speed_test_v6 'http://speedtest.sjc03.softlayer.com/downloads/test100.zip' 'Softlayer, San Jose, CA'
        speed_test_v6 'http://speedtest.wdc01.softlayer.com/downloads/test100.zip' 'Softlayer, Washington, WA'
        speed_test_v6 'http://speedtest.par01.softlayer.com/downloads/test100.zip' 'Softlayer, Paris, FR'
        speed_test_v6 'http://speedtest.sng01.softlayer.com/downloads/test100.zip' 'Softlayer, Singapore, SG'
        speed_test_v6 'http://speedtest.tok02.softlayer.com/downloads/test100.zip' 'Softlayer, Tokyo, JP'
    }
    
    io_test() {
        (LANG=C dd if=/dev/zero of=test_$$ bs=64k count=16k conv=fdatasync && rm -f test_$$ ) 2>&1 | awk -F, '{io=$NF} END { print io}' | sed 's/^[ 	]*//;s/[ 	]*$//'
    }
    
    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}
    }
    
    cname=$( awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ 	]*//;s/[ 	]*$//' )
    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/^[ 	]*//;s/[ 	]*$//' )
    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
    ",a,b,c)}' /proc/uptime )
    load=$( w | head -1 | awk -F'load average:' '{print $2}' | sed 's/^[ 	]*//;s/[ 	]*$//' )
    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 -ahPl | grep -wvE '-|none|tmpfs|devtmpfs|by-uuid|chroot|Filesystem' | awk '{print $2}' ))
    disk_size2=($( LANG=C df -ahPl | 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[@]} )
    
    clear
    next
    echo "CPU model            : $cname"
    echo "Number of cores      : $cores"
    echo "CPU frequency        : $freq MHz"
    echo "Total size of Disk   : $disk_total_size GB ($disk_used_size GB Used)"
    echo "Total amount of Mem  : $tram MB ($uram MB Used)"
    echo "Total amount of Swap : $swap MB ($uswap MB Used)"
    echo "System uptime        : $up"
    echo "Load average         : $load"
    echo "OS                   : $opsy"
    echo "Arch                 : $arch ($lbit Bit)"
    echo "Kernel               : $kern"
    next
    io1=$( io_test )
    echo "I/O speed(1st run)   : $io1"
    io2=$( io_test )
    echo "I/O speed(2nd run)   : $io2"
    io3=$( io_test )
    echo "I/O speed(3rd run)   : $io3"
    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 "Average I/O speed    : $ioavg MB/s"
    next
    printf "%-32s%-24s%-14s
    " "Node Name" "IPv4 address" "Download Speed"
    speed && next
    if [[ "$ipv6" != "" ]]; then
        printf "%-32s%-24s%-14s
    " "Node Name" "IPv6 address" "Download Speed"
        speed_v6 && next
    fi

    ***

    测试aliyun双核8G内存云主机:
    test12_aliyun_2 cpu 8 G memory

    [root@hd1_live_video_test12 data]# curl -Lso- bench.sh | bash
    ----------------------------------------------------------------------
    CPU model : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
    Number of cores : 2
    CPU frequency : 2593.748 MHz
    Total size of Disk : 60.0 GB (6.1 GB Used)
    Total amount of Mem : 7872 MB (5308 MB Used)
    Total amount of Swap : 0 MB (0 MB Used)
    System uptime : 16 days, 15 hour 29 min
    Load average : 0.08, 0.17, 0.08
    OS : CentOS 6.8
    Arch : x86_64 (64 Bit)
    Kernel : 2.6.32-642.6.2.el6.x86_64
    ----------------------------------------------------------------------
    I/O speed(1st run) : 56.4 MB/s
    I/O speed(2nd run) : 55.6 MB/s
    I/O speed(3rd run) : 56.2 MB/s
    Average I/O speed : 56.1 MB/s
    ----------------------------------------------------------------------
    Node Name IPv4 address Download Speed
    CacheFly 204.93.150.152 300KB/s
    Linode, Tokyo, JP 106.187.96.148 16.8MB/s
    Linode, Singapore, SG 139.162.23.4 42.5KB/s
    Linode, London, UK 176.58.107.39 9.12MB/s
    Linode, Frankfurt, DE 139.162.130.8 9.07MB/s
    Linode, Fremont, CA 50.116.14.9 1.92MB/s
    Softlayer, Dallas, TX 173.192.68.18 12.0MB/s
    Softlayer, Seattle, WA 67.228.112.250 4.97MB/s
    Softlayer, Frankfurt, DE 159.122.69.4 3.96MB/s
    Softlayer, Singapore, SG 119.81.28.170 31.1KB/s
    Softlayer, HongKong, CN 119.81.130.170 29.8KB/s

  • 相关阅读:
    Java基础-四要素之一《继承》
    Java基础-四要素之一《多态》
    Java基础-四大特性理解(抽象、封装、继承、多态)
    Java基础-父类-子类执行顺序
    Java基础--重写(Overriding,覆盖)-重载(Overloading)
    Java基础-数据类型转换
    Java基础-转义字符
    Java基础-数据类型int,short,char,long,float,double,boolean,byte
    算法-科学计算法
    Java基础-JVM堆与栈
  • 原文地址:https://www.cnblogs.com/reblue520/p/7130774.html
Copyright © 2011-2022 走看看