zoukankan      html  css  js  c++  java
  • shell写一个压测脚本

    ab命令

    ab是apache下面的一个性能压测工具

    yum install -y httpd-tools
    ab -n 1000 -c 10 http://xxxx
    # -n 请求数 -c 并发数
    

    基于ab写一个压测脚本

     #!/bin/bash
     
     requests=(1000 2000 10000)
     concurrency=(10 100)
     path="http://localhost:3000"
     
     benchmark() {
       if [ $3 -eq 0 ];then
         ab -n $1 -c $2 $path 2>&1 | awk 'BEGIN {printf "%-10s %-15s %-8s %-8s %-8s
    ", "Requests", "Concurrency", "Min(ms)", "Max(ms)", "Mean(ms)";printf "------------------------------------------------------ 
    "} /Total:/ {printf "%-10s %-15s %-8s %-8s %-8s
    ", "'$1'", "'$2'", $2, $6, $3}'
       else
         ab -n $1 -c $2 $path 2>&1 | awk '/Total:/ {printf "%-10s %-15s %-8s %-8s %-8s
    ", "'$1'", "'$2'", $2, $6, $3}'
       fi  
     }
     
     index=0
     for request in ${requests[@]}
     do
       for con in ${concurrency[@]} 
       do  
         benchmark $request $con $index 
         let 'index++'
       done
     done 
    

    压测结果:

    Requests   Concurrency     Min(ms)  Max(ms)  Mean(ms)
    ------------------------------------------------------
    1000       10              4        23       7       
    1000       100             9        52       39      
    2000       10              3        63       4       
    2000       100             9        42       31      
    10000      10              2        409      5       
    10000      100             9        1980     49    
    

    几个细节

    1. shell遍历数组 for request in ${requests[@]}
    2. awk中/Total:/必须放在BEGIN{printf ''}后面
    3. 管道符默认只传递标准输出,所以需要2>&1
    4. awk中printf中%-8s,负号表示左对齐,8表示占8位字符,s表示字符串
    5. shell中使用let进行数学计算
  • 相关阅读:
    jquery实现奇偶行赋值不同css值
    Android短信批量插入速度优化的思考与尝试
    Android短信列表的时间显示
    短信优先级及有效期
    模拟器收短信和接电话的方法
    Android:Perferences的使用
    留个脚印
    Android电池电量更新 BatteryService(转)
    Android号码匹配位数修改
    CDMA SMS pdu解码
  • 原文地址:https://www.cnblogs.com/Peter2014/p/13132235.html
Copyright © 2011-2022 走看看