为什么用的Http请求提琴手是速度极快(Why Http request with Fiddler

2019-06-24 03:49发布

我在抓取网站C#写了一个多线程程序,但是当我在后台请求启动提琴手完成12倍的速度更快,这对我来说真的很奇怪,当我关闭提琴手下载速率减慢起伏。 它是如何可能请大家帮忙,(有没有代理服务器设置我的连接到INETERNET和提琴手太),如果我可以注入我的应用程序小提琴手的性能,将是美好的,任何解决方案? 有没有幕后的任何魔法? :)

谢谢

Answer 1:

其原因是对于其使用招时忽略了HTTP连接的量的极限。

我在使用中遇到相同的行为System.Net.Http.HttpClient执行多个(〜80)的并发请求。 随着提琴手运行,所有的请求都完成得更快。 保持活动肯定已启用。

我用Wireshark来看看发生了什么和第一件事,我注意到,HTTP流量的方式是不同的。 随着提琴手的请求被扔一次全部和随之而来的反应很好地组合,以及之后。 如果没有提琴手的请求,用响应交错。

其次,TCPView的表明,我没有提琴手的代码创建只有2个TCP连接到服务器。 随着提琴手开始,连接的数量急剧增加。 共有来自我的应用程序提琴手,然后从提琴手服务器几十人。

众所周知的是,HTTP规范建议HTTP连接的数量应该不超过2个,似乎限制是在HTTP客户端默认设置来实现。

在.NET应用程序,我们可以控制的极限ServicePointManager.DefaultConnectionLimit静态属性。 作为一个实验中,具有其设置为100制成具有或不具有的Fiddler执行相同的速度的请求。

该设置也可以通过控制的app.config:

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

现在,当使用招,为什么不尊重默认的连接限制? 原来的限制是不同的,当HTTP客户端使用代理和提琴手不作为代理。 我没有找到有关除了代理连接限制太多信息这老文章 。



Answer 2:

你能告诉一些示例代码,使人们可以证实这一点? 否则,它会成为野生猜测。

我最好的猜测:菲德勒使用的keepalive这将节省一遍遍打开连接的麻烦。 您可以通过禁用这两个确认该Reuse client connections ,并Reuse connections to servers :如果它是那么像往常一样(或更慢)慢,好处是从保持连接活着上涨。



文章来源: Why Http request with Fiddler is blazing fast