网站制作学习网Linux→正文:httpd_load并发顺序访问url
字体:

httpd_load并发顺序访问url

Linux 2012/9/25 18:22:20  点击:不统计


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究

·上一篇:C socket 通信服务端端 >>    ·下一篇:Address family not supported by protocol >>
推荐文章
最新文章