首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过使用由bash脚本生成的动态url来使用siege进行工作台测试

通过使用由bash脚本生成的动态url来使用siege进行工作台测试
EN

Stack Overflow用户
提问于 2017-07-05 12:13:48
回答 1查看 442关注 0票数 0

我想用围城测试我的网站有1百万个不同的urls请求,我需要知道我可以创建一个bash脚本来做一个随机循环或php脚本来从数据库中读取urls并创建动态urls,并将这个urls给围城命令来执行台测试?

例如,我有这样一种banner_sizes:

代码语言:javascript
复制
[
    {
        "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:

代码语言:javascript
复制
 [
  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:

代码语言:javascript
复制
www.example.come/api/is/normal_x234h60/899
www.example.com/api/is/normal_x600h300/898

更像这样。

有没有办法创建此urls并将其放入txt文件中,然后运行我的围城命令:

代码语言:javascript
复制
   siege -c10000 -b -t30m -f urls.txt

或者使用apache ab工作台测试?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 14:16:56

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

代码语言:javascript
复制
siege -c10000 -b -t30m -f urls.txt

但由于大请求的围攻问题,我创建了一个bash脚本,它将读取urls.txt文件的每一行,并使用每个url运行apache ab测试,以对我的应用程序的动态url进行压力测试。

创建urls的php代码:

代码语言:javascript
复制
        $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脚本:

代码语言:javascript
复制
while read LINE; do
   cmnd="./ab -n10000 -c100 "
   cmnd=${cmnd}"$LINE"
   eval $cmnd
   cmnd=''
done < urls.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44916899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档