本帖最后由 yzmsb 于 2009-09-07 04:37:19 编辑

解决方案 »

  1.   

    问题现象同使用了 
                    ServicePoint sp = wrt.ServicePoint;
                    sp.ConnectionLimit =1;
    类似可是在那个问题机上使用sp.ConnectionLimit =99; 还是只有一个tcp连接在使用呢(在开发机上使用ConnectionLimit =1;只有一个连接,而不使用的话会有好多tcp连接)
      

  2.   

    记得微软系统有一个叫什么系统连接数.....默认的IE链接服务器只能同步开5个线程,这个个数也是和OS的版本不同而不同...你的问题会不会和IE这样的问题一样呢....
    还有LZ在提问题的时候最好把问题说清楚..你指的那个别电脑的配置怎么样?是什么OS....线程貌似和CPU有很大的联系...
    祝LZ问题早日解决...嘎嘎...
      

  3.   


    不好意思呀,我文化水平不高虽然心里急但表述的都不是太清楚。 就是windows 2003服务器系统.另一个也是windows 2003系统正常的。。 系统的连接数改过的。都是正常的。而且限制系统tcp连接数的系统里其他线程是等待创建tcp连接。而这个系统竟然是多个线程共用一个tcp连接。就好像用lock锁定了一样的!
      

  4.   

    试下request.GetResponse().Close();
    看看是不是多个线程阻塞的原因。
      

  5.   

    不是的呀。使用多线程正常情况下是各个线程分开建立连接。而这个客服机竟然是N个线程都共用一个tcp连接。郁闷死。在其他机上都是分开建连接正常的。这个机用socket写也正常的。但socket写http应用太难了
      

  6.   

    好像只允许两个链接吧这里有个案例,就是说这个事的:http://blogs.msdn.com/tess/archive/2006/02/23/537681.aspx
      

  7.   

    RFC 2616, the RFC for Hypertext Transfer Protocol -- HTTP/1.1."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." 
    解决办法:
     在machine.config的<system.net>节找到下面的节点,将autoconfig 改成true<ProcessModel>
      <autoconfig = "true">
    </ProcessModel>
      

  8.   


    你好。问题应该可以通过这个文件的某个设置修改通过。但上面那个 autoconfig 2.0里面都是默认存在的呀。 无论设定多少线程httpwebrequest都只使用一个tcp连接
      

  9.   

    非要做的话,自己用TCP模拟HTTP好了~,想开几个就开几个~
      

  10.   

    你的request是哪里产生的应该在各个线程中独立产生的局部变量request,才会使用多个连接吧
      

  11.   

    你好。我的相法和你一样。。可是我技术菜socket复杂点就不会写了
      

  12.   


    你好。你的回复让我看到解决这问题的曙光了!!!正常的机上,多少个线程就开多少个tcp连接(一个线程都需要n次httprequest连接呢,为什么不像socket那样创建新的tcp连接端口同服务器通讯呢?这应该就是这位朋友说的全局httprequest了吧)可奇怪的是。。我的request是在多线程局部方法里面声明的呀。每次连接我都用   HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL); 。。郁闷死。。怎么真正设定他的局部变量呀
      

  13.   

    netstat -n看到。。第一次运行时创建的连接端口。直到程序终止。都还在使用这个端口。正常速度下也是如此
      

  14.   

    谢谢楼上的朋友帮忙顶忙。。我发现request有个特性。就是朋友们说的全局request一样。从开始到结束,无论多次get或post请求。一个线程共用一个tcp连接而这个机上更离谱。。N个线程共用一个tcp连接
      

  15.   

    HttpWebRequest的KeepAlive 属性试过没有?
    设为FALSE看看
      

  16.   

    你好。KeepAlive都是默认未设置过的。如果把他的属性改成false.那Connection就是close状态了。。我刚试了刚成false。。那个有性格的机上一个关闭再开启一个新的比原先的还慢所以问题的原因应该是网络配置方法的问题。。比如连接数如果不改一下默认只有2个。
      

  17.   

    我们用ie打个一个网页。同一个ip会有N个连接都是"ESTABLISHED"状态的。按f5刷新一下会产生新的连接而httprequest却是使用前面的(好像节能似的)
      

  18.   

    试试 (HttpWebRequest)WebRequest.Create(URL); 另外,那台个性机器上面配置的代理是? 默认的IE代理不支持1.1,
    但是如果设置成支持1.1,也许就会只用一个连接了??
      

  19.   

    你好啊,我遇到的问题简直就是跟你的一个模子里刻出来的。写了个爬虫程序,HttpWebRequest.GetResponse()多线程下netstat -an 永远都是只能建立两个连接,从来没突破过。束手无策了。有那位仁兄帮帮忙啊。