httpd_load并发顺序访问url
nginx可以做web服务,也可以做web代理,测试代理并发请求的时候用到了开源的并发请求软件httpd_load,这个软件大家应该听过。
我们在测试代理的时候出现了这样一个问题,想让代理内容量达到最大,我们设置了1000w的url,但在httpd_load的并发测试中,请求是按照随机产生的,在请求的开始阶段内容增加很快,单随着代理内容upstream到本地后,逐渐下降,根本到达不了1000w的url量,于是,更改一下
httpd_load使其可以顺序并发访问url
原来随机请求的url
//url_num = ( (unsigned long) random() ) % ( (unsigned int) num_urls );
我们修改分了两种情况,一种是倒序访问一种是正序访问
1.先看倒序访问
获得后url_num是要请求的第几个url,那么我们更改url_num顺序访问即可。
更改代码为:
//httpd_load 在91行
static int num_urls, max_urls,temp_urls;
说明:这里新增加了temp_urls全局变量,用来存储总的url的数量
//httpd_load在620行新增加
temp_urls = num_urls;
说明:这里增加的代码是 read_url_file函数,读取url的总的数量,这里给上面的全局变量temp_urls赋值一下。
//httpd_load是805行左右
源代码:url_num = ( (unsigned long) random() ) % ( (unsigned int) num_urls );
更改为
url_num = (unsigned int)(--num_urls);
if(url_num == 0) num_urls = temp_urls;
说明:这里代码是 start_connection函数中,这里的num_urls是在我们给httpd_load传递的路径文件的url总量。从大到小逐渐递减,当等于零时
,再从temp_urls里面拿过来,重新赋值。当超过url数量的访问将会从新从最后的一个url到第一个循环访问。
2.如果想顺序访问呢那就讲定义的temp_urls初始化为0
//httpd_load 在91行定义temp_urls
static int num_urls, max_urls,temp_urls;
//httpd_load是805行左右
源代码:url_num = ( (unsigned long) random() ) % ( (unsigned int) num_urls );
更改为
url_num = (unsigned int)(temp_urls++);//( (unsigned long) random() ) % ( (unsigned int) num_urls );
temp_urls = temp_urls % num_urls;
其他就基本不变了。
这样就可以并发顺序访问url了。httpd_load按照顺序访问URL
转www.载for网站制作学习asp必.cn究