0

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

然后,一旦我开始尝试对它进行多线程处理(一次通过尝试 thread.start(),然后另一次通过在 webrequest 对象上调用 beginrequestgets),请求没有到达服务器(iis 日志中没有任何内容,没有增加在请求执行中,请求/秒等)---除非 Fiddler 开启!开启提琴手后,它的工作原理与我预期的一样。

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

4

2 回答 2

1

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

另一种选择是来自 Microsoft的WCAT 。

于 2009-11-20T13:07:35.777 回答
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;

顺便说一句,我经常在这种奇怪的情况下使用的工具是HttpWatch。它很昂贵,但它就像 fiddler,但作为浏览器插件工作,这意味着它会检测代理问题和其他在 Fiddler 中没有出现的问题。它也适用于 HTTPS。

于 2009-11-20T12:47:04.233 回答