2017-07-05 78 views
0

我想用我的网站用不同的URL通过1M请求来使用围攻来测试我的网站,我需要知道我可以创建一个bash脚本来执行随机循环或php脚本从数据库读取网址并创建动态网址,并给这个网址攻城指挥进行台架测试?使用围攻通过使用bash脚本生成的动态url进行长凳测试

例如我有这种类型的banner_sizes的:

[ 
    { 
     "id": 1, 
     "size": "normal_x970h90", 
    }, 
    { 
     "id": 2, 
     "size": "normal_x234h60", 
    }, 
    { 
     "id": 3, 
     "size": "normal_x468h60", 
    }, 
    { 
     "id": 4, 
     "size": "normal_x300h600", 
    }, 
    { 
     "id": 5, 
     "size": "normal_x120h600", 
    }, 
    { 
     "id": 6, 
     "size": "normal_x160h600", 
    }, 
    { 
     "id": 7, 
     "size": "normal_x120h240", 
    }, 
    { 
     "id": 8, 
     "size": "normal_x300h250", 
    }, 
    { 
     "id": 9, 
     "size": "normal_x250h250", 
    }, 
    { 
     "id": 10, 
     "size": "normal_x600h300", 
    }, 
    { 
     "id": 11, 
     "size": "normal_x728h90", 
    }, 
    { 
     "id": 12, 
     "size": "normal_x300h100", 
    }, 
    { 
     "id": 13, 
     "size": "normal_x125h125", 
    } 
] 

而且我也有这些ID的:

[ 
    0 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#915} 
    ] 
    1 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#926} 
    ] 
    2 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#924} 
    ] 
    3 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#913} 
    ] 
    4 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#929} 
    ] 
    5 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#862} 
    ] 
    6 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#863} 
    ] 
    7 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#864} 
    ] 
    8 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#865} 
    ] 
    9 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#928} 
    ] 
    10 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#927} 
    ] 
    11 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#917} 
    ] 
    12 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#918} 
    ] 
    13 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#899} 
    ] 
    14 => array:1 [ 
    "_id" => MongoDB\BSON\ObjectID {#898} 
    ] 
] 

我需要创建使用以上信息,这些类型的URL:

www.example.come/api/is/normal_x234h60/899 
www.example.com/api/is/normal_x600h300/898 

和更多类似。

有没有一种方法来创建这个网址,并把他们的txt文件,然后运行我的攻城命令:

siege -c10000 -b -t30m -f urls.txt 

或者使用Apache AB台架试验?

回答

1

我已经找到了解决这个问题的方法,我创建了一个php文件,它连接到mysql和mongodb数据库并读取数据,然后在嵌套for循环中创建了我需要的url并将它们存储在txt文件。 那么我只需要运行攻城命令:

siege -c10000 -b -t30m -f urls.txt 

但由于大尺寸的请求围困问题我创建了一个bash脚本,将读取urls.txt文件的每一行,并使用每个运行Apache的AB测试网址来强调我的应用程序动态URL测试。

PHP代码创建URL:

 $seats = Seat::where('status', 'ACTIVE')->get(); 
     $s_count = Seat::where('status', 'ACTIVE')->count(); 


     $bs = Banners::where('status', 'enable')->get(); 
     $bs_count = Banners::where('status', 'enable')->count(); 

     $url = Config('conf.APP_PATH') . "/api/is/"; 
     $url_array = array(); 

     for ($i = 0; $i < $s_count; $i++) { 
      for ($j = 0; $j < $bs_count; $j++) { 
       $url_array[] = $url . $bs[$j]['size'] . "/" . $seats[$i]['_id']."\n"; 
      } 
     } 


     File::put('./url.txt',$url_array); 

bash脚本来运行多个台架试验:

while read LINE; do 
    cmnd="./ab -n10000 -c100 " 
    cmnd=${cmnd}"$LINE" 
    eval $cmnd 
    cmnd='' 
done < urls.txt