自制的.net压力工具只会在Fiddler打开时产生压力 - 为什么?

时间:2009-11-20 12:35:04

标签: c# .net fiddler

当试图对新的网络应用程序施加一些沉重的压力时,我们遇到了我们常用的免费工具(WAS,其他一些免费的ms工具(wcat?))的问题,所以我创建了一个v。快速和脏将使用.net webrequest对象,打开新线程,并不断从文件中搜索列表URL的工具。在一个线程上,它先前产生了一点负载。

然后,一旦我开始尝试多线程(一次通过尝试thread.start(),然后再通过调用webrequest对象上的beginrequestgets),请求没有到达服务器(iis日志中没有任何内容) ,没有增加请求执行,请求/秒等)---除非Fiddler开启!随着小提琴手的开启,它的效果就像我期望的那样。

我对使用这个小应用程序不是特别感兴趣(可能会尝试寻找另一个免费的网络压力工具 - 任何建议吗?)但我的主要问题是,为什么我的小应用程序只会在通过时提供压力Fiddler的代理?有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以查看Apache Bench。它是Apache服务器软件的一部分,但ab.exe完全独立,您无需安装服务器。在描述中它说它用于测试Apache超文本传输​​协议(HTTP)服务器,但它适用于任何HTTP服务器。我已经在多个项目中使用它来执行压力测试,我可以说它是一个很棒的工具。由于它允许发布数据,因此它也可用于测试Web服务。

另一种选择是来自Microsoft的WCAT

答案 1 :(得分:0)

可能是您应用中缺少的代理设置。您通常使用代理服务器连接到您正在强调的服务器吗?

Fiddler在登录用户的上下文中运行,包括任何代理设置。但是,在编写自己的WebClient / HttpWebRequest时,代理不会自动使用 - 您需要在代码或配置中自行启用代理。

如果您的压力服务器(或您的代理)需要身份验证,也可能是权限问题。

这里有一些代码可以解决缺少代理和缺少身份验证的问题。请注意,对于WebClient,可以使用相同的代码作为HttpWebRequest:

WebClient wc  = new WebClient();
WebProxy wp = new WebProxy("http://myproxyserver:80/",true);
wp.UseDefaultCredentials = true;
wc.Proxy = wp;
wc.UseDefaultCredentials = true;
BTW,我经常在奇怪的情况下使用的工具是HttpWatch。它很昂贵,但它就像小提琴手,但它作为一个浏览器插件,这意味着它将检测代理问题和其他问题,这些问题并没有出现在Fiddler里面。它也适用于HTTPS。