分享

webservice 多线程

 寂静如河 2012-02-21

同事在做多线程访问webservice的时候,发现总是很慢,平均速度比单线程访问要慢得多,后来,用了多进程去访问,结果就好多了

 

后来上网查了一下,有个HTTP双连接限制的情况,原文如下

 

HTTP   双连接限制
HTTP   规范表明,一个   HTTP   客户端与任一服务器最多可以同时建立两个   TCP   连接。这可以防止单个浏览器在浏览某个页面(例如,具有   120   个嵌入的缩略图)时,由于连接请求过多而使服务器负载过重。此时,浏览器将仅创建   2   个连接,然后通过这两个管道开始发送   120   个   HTTP   请求,而不是创建   120   个   TCP   连接并通过每个连接来发送   HTTP   请求。对于中间层,此方法的问题在于,中间层可能会有   50   个同时请求连接的用户。如果不得不为每个用户进行一次   MapPoint   .NET   Web   服务调用,将会有   48   个用户等待两个管道中的一个空闲下来。

maxconnections
连接到   Web   资源的默认双连接限制可以通过一个名为   connectionManagement   的配置元素来控制。connectionManagement   设置允许您添加要让其采用非默认连接限制的站点的名称。可以将以下内容添加到典型的   Web.config   文件中,将您连接的所有服务器的连接限制默认值增加到   40。

<configuration>
    <system.net>
        <connectionManagement>
            <add   address= "* "   maxconnection= "40 "   />
        </connectionManagement>
    </system.net>

    <system.web>
          ...
应当注意的是,对本地计算机的连接数量从来都没有限制,因此,如果是连接到本地主机,则此设置无效。

我想如果一个进程为一个HTTP客户端的话,那么你在这个进程里面开多个线程进行webservice访问时,也是同时并发2个

然后做了测试,多线程返回结果果然是2个2个往外蹦 

然后就加了

  <system.net>
        <connectionManagement>
            <add   address= "* "   maxconnection= "40 "   />
        </connectionManagement>
    </system.net>

就好了

 

这里说一些细节,原来配制文件也有顺序,我把上面的配制放在配制文件的顶部就会报错

adress 的格式 是 http://192.168.0.2/

后面加个/都会报错

另外,做测试的机子是XP,IIS的最大连接数为10个,所以只能开10个线程

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多