Chinaunix首页 | 论坛 | 博客
  • 博客访问: 369876
  • 博文数量: 71
  • 博客积分: 4691
  • 博客等级: 上校
  • 技术积分: 935
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-14 15:14
个人简介

who am i ... i'm back.

文章分类

全部博文(71)

文章存档

2014年(4)

2011年(1)

2010年(22)

2009年(17)

2008年(27)

我的朋友

分类: WINDOWS

2010-07-07 09:02:42

过Web方式访问联通L1接口。
单人定位20-30秒左右,多人速度明显变慢,100人 1300秒左右。
原来以为联通处理能力达不到多个请求并发,使用多线程延迟处理,每半秒发一个。效果不明显。后来使用Traffic Analyzer分析连接数据的时候发现,并不是想象的建立了100个请求。而只有两个请求。这个地方走了弯路,其实可以使用性能记数器中的Web Service\Current Connections 来查看的。
知道原因就好办了,在老桂协助下,查到了解决办法,修改配置文件





其中,connectionManagement节点负责指定客户端与某一网络主机之间所能建立的最高连接数量。它在Machine.config文件中 的默认取值就是2。我们完全可以在应用程序级的配置文件中对这一限额做出更改。address属性表明该连接限额针对的是哪一个网络地址,*表明所有的网 络主机;如果写成address=""就表明后面的maxconnection只适用于对qqdao的访问。
好了,现在就可以根据自己的需要来更改配置了。如果你把maxconnection的取值改成了1000,那么你的测试应用程序与服务器之间所能建立的最 高连接数量就是测试用应用程序域的数量 * 1000  

经过修改后的程序定位100人只需要110秒左右,圆满完成设计需求!

另外网上还有几种方法,提供出来,大家可以看看思路
方法二 使用AppDomain
在. NET中,一个AppDomain就被视为网络连接中的一个客户端,因此如果希望用一个测试应用程序模拟多个客户端,那么只须创建多个AppDomain 即可。需要注意的是,对于每一个AppDomain,最高2个的连接限额仍然存在,不同之处只是我们可以使用一个测试应用程序发送超过2个的并发请求了 (现在为了模拟1000个并发量就不需要找500台测试机器了)。请看下面的代码:
AppDomain appDomain = AppDomain.CreateDomain("");
appDomain.ExecuteAssembly(@"TestClient.exe");
AppDomain.Unload(appDomain);
方法三:
ServicePointManager.DefaultConnectionLimit = 1000;
方法四:
protected override WebRequest GetWebRequest(Uri uri) {
HttpWebRequest req = (HttpWebRequest)base.GetWebRequest(uri);
ServicePoint currentServicePoint = req.ServicePoint;
req.ConnectionLimit = 1000;
return req;
}

阅读(1532) | 评论(1) | 转发(0) |
0

上一篇:C# HTTP SERVER

下一篇:C# Thread类的使用

给主人留下些什么吧!~~

chinaunix网友2011-01-07 17:04:03

你這些方法是放在server端還是放在Client端? 我是用Delphi(Client) 調用.net(c#)Webservice的 我在WebServer端設定好像不行哦。 能不能幫幫忙。。。謝謝