英语网站都可以做哪些内容网络技术人员
news/
2025/9/24 2:33:27/
文章来源:
英语网站都可以做哪些内容,网络技术人员,网站二级目录怎么做,网站建设商城模板下载这两天猫在家里搞一个多线程的断点续传得C#程序#xff0c;发现同时只能开2个线程下载#xff0c;其他的线程一律要等待#xff0c;这样就导致下载大文件时其他线程经常超时#xff0c;郁闷好久。今天回公司无意中发现了一个帖子#xff0c;终于真相大白了#xff0c; …这两天猫在家里搞一个多线程的断点续传得C#程序发现同时只能开2个线程下载其他的线程一律要等待这样就导致下载大文件时其他线程经常超时郁闷好久。今天回公司无意中发现了一个帖子终于真相大白了 现摘录如下 这几天在做IIS 6上Web Service (WSE 2.0)的性能测试。在这个过程中陆续发现和解决了一些问题。 其中有一个问题比较有意思。我和项目组的同事发现不论我们用C#写的模拟客户端用多少并发量来连接Web Service服务器端监测到的并发连接数性能记数器中的Web Service\Current Connections总是每客户端最高2个。这使得我们无法查看服务器在大并发量下的真切反应。 那么为什么服务器会对每客户端做出最高2个并发量的限制呢 通过查找资料我找到了问题的根源。原来在HTTP 1.1 Spec中针对Persistent Connections提出了这样的Practical considerations Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion. 以上内容表明为了提高HTTP响应时间以及避免产生网络堵塞HTTP连接中的客户端不应该与服务器端建立超过2个的HTTP连接。如果有更多的请求需要那么这些请求将被pipeline到这两个HTTP连接之中并以异步的方式传送给服务器端。举个例子有上百辆汽车requests想从天津开往北京但是天津与北京之间最多只允许修建两条公路HTTP connection因此这些汽车要想从天津驶往北京的话就只能走这两条公路。 但是有时的确需要突破这样的限制。比如我一开始提到的性能测试我需要用尽可能少的客户端程序来模拟尽可能多的用户访问而不能为了模拟1000个并发量同时使用500台机器来测。那么应该怎样通过一个测试应用程序来产生指定的并发数量呢 不难看出为了提高单一测试应用程序所产生的并发量就应该增加两个指标网络客户端数量和单一客户端的HTTP连接数量。就我所知可以通过以下两种方法来分别提高这两个指标。 方法一使用AppDomain 在. NET中一个AppDomain就被视为网络连接中的一个客户端因此如果希望用一个测试应用程序模拟多个客户端那么只须创建多个AppDomain 即可。需要注意的是对于每一个AppDomain最高2个的连接限额仍然存在不同之处只是我们可以使用一个测试应用程序发送超过2个的并发请求了现在为了模拟1000个并发量就不需要找500台测试机器了。请看下面的代码 AppDomain appDomain AppDomain.CreateDomain(); appDomain.ExecuteAssembly(TestClient.exe); AppDomain.Unload(appDomain); 在这里我通过调用AppDomain的静态方法CreateDomain创建了一个新的应用程序域并要求该应用程序域执行一个应用程序 TestClient.exe。该应用程序将负责向服务器发送请求最多只能建立两个连接。你可以通过多线程的方式来驱动上述代码使得大量应用程序域在近乎相同的时间里被创建从而就可以模拟指定数量的客户端并产生所希望的并发访问量。 方法二使用配置文件 除了增加客户端数量以外我们还可以增加单一客户端所能建立的HTTP连接数量。在.NET中实现这一目标非常容易只需要在客户端没错是客户端的配置文件中增加以下几行即可 system.net connectionManagement add address* maxconnection100/ /connectionManagement /system.net 其中connectionManagement节点负责指定客户端与某一网络主机之间所能建立的最高连接数量。它在Machine.config文件中的默认取值就是2。我们完全可以在应用程序级的配置文件中对这一限额做出更改。address属性表明该连接限额针对的是哪一个网络地址*表明所有的网络主机如果写成addresswww.google.com就表明后面的maxconnection只适用于对google的访问。 好了现在就可以根据自己的需要来更改配置了。如果你把maxconnection的取值改成了1000那么你的测试应用程序与服务器之间所能建立的最高连接数量就是测试用应用程序域的数量 * 1000测吧 方法三 ServicePointManager.DefaultConnectionLimit 1000; 方法四 protected override WebRequest GetWebRequest(Uri uri) { HttpWebRequest req (HttpWebRequest)base.GetWebRequest(uri); ServicePoint currentServicePoint req.ServicePoint; currentServicePoint.ConnectionLimit 1000; return req; } 转载于:https://www.cnblogs.com/fungchou/archive/2008/06/26/1230596.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914610.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!