1. 程式人生 > 實用技巧 >linux伺服器效能測試

linux伺服器效能測試

  1 #!/bin/sh
  2 #Shell      menu.sh
  3 #Author    lipc
  4 #Date      20200818
  5 #Ps       linux系統壓測,有些工具需要下載,指令碼不完善,需要除錯
  6 
  7 # Check if user is root
  8 [ $(id -u) != "0" ] && {
  9     echo "${CFAILURE}Error: You must be root to run this script${CEND}"
 10     exit 1
 11 }
 12 pwd=/tmp
 13
14 #初始化、安裝跑分 15 function Test_environment_initialization() { 16 dir=$(pwd) 17 cd $pwd 18 yum -y install gcc automake autoconf libtool make perl-Time-HiRes perl wget vim screen 19 20 cd $pwd 21 if [ -s UnixBench-5.1.4.tar.gz ]; then 22 echo "UnixBench-5.1.4.tar.gz [found]
" 23 else 24 echo "UnixBench-5.1.4.tar.gz not found!!!download now..." 25 if ! wget -c https://github.com/qcsuper/byte-unixbench/releases/download/v5.1.4/UnixBench-5.1.4.tar.gz; then 26 echo "Failed to download UnixBench-5.1.4.tar.gz, please download it to ${cur_dir} directory manually and try again.
" 27 exit 1 28 fi 29 fi 30 tar -zxvf UnixBench-5.1.4.tar.gz && rm -f UnixBench-5.1.4.tar.gz 31 cd UnixBench/ 32 make 33 34 cd $pwd 35 if [ -s 1.0.17]; then 36 echo "sysbench-1.0.17.tar.gz [fonud]" 37 else 38 echo "sysbench-1.0.17.tar.gz not found!!!download now..." 39 if ! wget -c https://codeload.github.com/akopytov/sysbench/tar.gz/1.0.17; then 40 echo "Failed to download sysbench-1.0.17.tar.gz, please download it to ${cur_dir} directory manually and try again." 41 exit 1 42 fi 43 fi 44 tar -zxvf 1.0.17 -C /usr/local/ && rm -f 1.0.17 45 cd /usr/local/sysbench-1.0.17 46 ./autogen.sh 47 ./configure --without-mysql 48 make -j 49 make install 50 51 #安裝獲取伺服器軟體、硬體資訊的指令碼。 52 if [ ! -e '/tmp/systeminfo.sh' ]; then 53 echo "Installing systeminfo.sh......" 54 dir=$(pwd) 55 cd $pwd 56 wget -N --no-check-certificate https://raw.githubusercontent.com/learning2016/Server-evaluation/master/systeminfo.sh >/dev/null 2>&1 57 cd $pwd 58 chmod a+rx /tmp/systeminfo.sh 59 fi 60 #安裝網路延遲的指令碼。 61 if [ ! -e '/tmp/AWS-ping.py' ]; then 62 echo "Installing AWS-ping.py......" 63 dir=$(pwd) 64 cd $pwd 65 wget -N --no-check-certificate https://raw.githubusercontent.com/learning2016/Server-evaluation/master/AWS-ping.py >/dev/null 2>&1 66 cd $pwd 67 chmod a+rx /tmp/AWS-ping.py 68 fi 69 } 70 71 function Get_hardware_and_software_information() { 72 /usr/bin/bash /tmp/systeminfo.sh 73 } 74 75 function Network_delay_test() { 76 python /tmp/AWS-ping.py 77 } 78 79 function The_CPU_test() { 80 #printf "正在測試,請耐心等待" 81 /usr/bin/sysbench cpu --cpu-max-prime=200000000 --threads=8 run >/tmp/cpu.log 2>&1 82 #clear 83 name13=CPU計算素數所需時間 84 name14=$(cat /tmp/cpu.log | grep "total time:") 85 str7=$name13$name14 86 echo $str7 87 } 88 89 function The_memory_test() { 90 #printf "正在測試,請耐心等待" 91 /usr/local/sysbench-1.0.17/src/sysbench --test=memory --memory-block-size=8K --memory-total-size=4G --num-threads=2 run >/tmp/memory.log 2>&1 92 name15=記憶體讀寫效能 93 name16=$(cat /tmp/memory.log | grep "transferred") 94 str8=$name15$name16 95 echo $str8 96 } 97 98 function Disk_test() { 99 #printf "正在測試,請耐心等待,大約30分鐘" 100 #rndrw 混合隨機讀/101 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw prepare >/tmp/rndrw-prepare.log 2>&1 102 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw run >/tmp/rndrw-run.log 2>&1 103 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw cleanup >/tmp/rndrw-cleanup.log 2>&1 104 105 #rndwr 隨機寫入 106 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr prepare >/tmp/rndwr-prepare.log 2>&1 107 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr run >/tmp/rndwr-run.log 2>&1 108 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr cleanup >/tmp/rndwr-cleanup.log 2>&1 109 110 #rndrd 隨機讀取 111 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd prepare >/tmp/rndrd-prepare.log 2>&1 112 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd run >/tmp/rndrd-run.log 2>&1 113 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd cleanup >/tmp/rndrd-cleanup.log 2>&1 114 115 #seqrd 順序讀取 116 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd prepare >/tmp/seqrd-prepare.log 2>&1 117 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd run >/tmp/seqrd-run.log 2>&1 118 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd cleanup >/tmp/seqrd-cleanup.log 2>&1 119 120 #seqrewr 順序讀寫 121 #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr prepare > /tmp/seqrewr-prepare.log 2>&1 122 #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr run > /tmp/seqrewr-run.log 2>&1 123 #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr cleanup > /tmp/seqrewr-cleanup.log 2>&1 124 125 #seqwr 順序寫入 126 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr prepare >/tmp/seqwr-prepare.log 2>&1 127 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr run >/tmp/seqwr-run.log 2>&1 128 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr cleanup >/tmp/seqwr-cleanup.log 2>&1 129 130 #clear 131 name1=順序寫入速度 132 name2=$(cat /tmp/seqwr-run.log | grep "written, MiB/s:") 133 str1=$name1$name2 134 echo $str1 135 136 #name3=順序讀寫速度 137 #name4=$(cat /tmp/seqrewr-run.log |grep "written, MiB/s:") 138 #str2=$name3$name4 139 #echo $str2 140 141 name5=順序讀取速度 142 name6=$(cat /tmp/seqrd-run.log | grep "read, MiB/s:") 143 str3=$name5$name6 144 echo $str3 145 146 name7=隨機讀取速度 147 name8=$(cat /tmp/rndrd-run.log | grep "read, MiB/s:") 148 str4=$name7$name8 149 echo $str4 150 151 name9=隨機寫入速度 152 name10=$(cat /tmp/rndwr-run.log | grep "written, MiB/s:") 153 str5=$name9$name10 154 echo $str5 155 156 name11=混合隨機讀/157 name12=$(cat /tmp/rndrw-run.log | grep "MiB/s") 158 str6=$name11$name12 159 echo $str6 160 } 161 162 function Grading_test() { 163 cd /tmp/UnixBench 164 ./Run >/tmp/unixbench.log 2>&1 165 name17=Unixbench評分 166 name18=$(cat /tmp/unixbench.log | grep "System Benchmarks Index Score") 167 str9=$name17$name18 168 echo $str9 169 } 170 171 function A_key_test() { 172 screen iotest 173 Test_environment_initialization 174 Get_hardware_and_software_information 175 printf '%80s\n' | tr ' ' - 176 Network_delay_test 177 printf '%80s\n' | tr ' ' - 178 The_CPU_test 179 printf '%80s\n' | tr ' ' - 180 The_memory_test 181 printf '%80s\n' | tr ' ' - 182 Disk_test 183 printf '%80s\n' | tr ' ' - 184 Grading_test 185 printf '%80s\n' | tr ' ' - 186 } 187 188 function menu() { 189 cat <<EOF 190 ---------------------------------------- 191 |***************選單主頁***************| 192 ---------------------------------------- 193 $(echo -e "\033[33m 1)測試環境初始化(必選)\033[0m") 194 $(echo -e "\033[33m 2)獲取軟硬體資訊\033[0m") 195 $(echo -e "\033[33m 3)網路延遲測試\033[0m") 196 $(echo -e "\033[33m 4)CPU測試\033[0m") 197 $(echo -e "\033[33m 5)記憶體測試\033[0m") 198 $(echo -e "\033[33m 6)磁碟IO測試(預估至少30分鐘)\033[0m") 199 $(echo -e "\033[33m 7)Unixbench評分測試(預估至少45分鐘)\033[0m") 200 $(echo -e "\033[33m 8)一鍵測試(預估至少75分鐘)\033[0m") 201 $(echo -e "\033[33m 9)退出\033[0m") 202 EOF 203 read -p "請輸入對應產品的數字:" num1 204 case $num1 in 205 1) 206 #clear 207 Test_environment_initialization 208 menu 209 ;; 210 #獲取伺服器軟體、硬體資訊。 211 2) 212 #clear 213 Get_hardware_and_software_information 214 menu 215 ;; 216 #獲取網路延遲。 217 3) 218 #clear 219 Network_delay_test 220 menu 221 ;; 222 #測試cpu。 223 4) 224 #clear 225 The_CPU_test 226 menu 227 ;; 228 #測試記憶體。 229 5) 230 #clear 231 The_memory_test 232 menu 233 ;; 234 #測試磁碟IO。 235 6) 236 #clear 237 Disk_test 238 menu 239 ;; 240 #伺服器效能跑分。 241 7) 242 #clear 243 Grading_test 244 menu 245 ;; 246 #以上功能,一鍵完成。 247 8) 248 A_key_test 249 menu 250 ;; 251 9) 252 exit 0 253 ;; 254 esac 255 } 256 menu