이유는 Fiddler를 사용할 때 무시되는 HTTP 연결의 양에 대한 제한입니다.
System.Net.Http.HttpClient
을 사용하여 여러 (~ 80) 동시 요청을 수행하는 동안 동일한 문제가 발생했습니다. Fiddler가 실행되면서 모든 요청이 훨씬 빨리 완료되었습니다. Keep-alive가 확실히 활성화되었습니다.
나는 Wireshark를 사용하여 무슨 일이 일어나고 있는지, 그리고 http 트래픽의 방식이 다르다는 것을 알았습니다. 피들러 (Fiddler)의 요청이 한꺼번에 던져지면서 응답이 멋지게 그룹화되었습니다. Fiddler가 없으면 요청이 응답으로 인터리빙되었습니다.
두 번째로, tcpview는 Fiddler가없는 코드가 서버에 단 2 개의 TCP 연결을 생성했다는 것을 보여주었습니다. Fiddler가 시작됨에 따라 연결 수가 크게 증가했습니다. 내 앱에서 피들러까지 수십 명이 있었는데, 그 다음 피들러에서 서버까지.
http 표준은 http 연결 수를 2 개 이하로 권장하고 HTTP 클라이언트의 기본 설정으로 제한이 구현 된 것으로 알려져 있습니다.
.NET 응용 프로그램에서는 ServicePointManager.DefaultConnectionLimit
정적 속성으로 제한을 제어 할 수 있습니다. 실험으로 100으로 설정하면 Fiddler의 유무에 관계없이 요청이 동일한 속도로 실행됩니다.
이제
<system.net>
<connectionManagement>
<add address="*" maxconnection="100" />
</connectionManagement>
</system.net>
, 왜 기본 연결 제한이 피들러를 사용하는 동안 존중되지 않습니다
설정도의 app.config를 통해 제어 할 수 있습니까? http 클라이언트가 프록시를 사용하고 Fiddler가 프록시 역할을하는 경우 한계가 다릅니다. this old article 외에도 프록시 연결 제한에 대한 많은 정보를 찾지 못했습니다.
내 프로그램에서 연결을 만들고 콘텐츠를 다운로드하면 응답을 닫고 마지막으로 요청을 중단하지만이 코드가 백그라운드에서 피들러와 함께 실행되는 동일한 코드인지 궁금합니다. 빠른. Fiddler가 내 요청을 변경하고 각 요청에 대해 동일한 연결을 사용합니까? – Ehsan
@Eshan _ "Fiddler가 요청을 변경하고 각 요청에 대해 동일한 연결을 사용합니까?"_ 예. – CodeCaster
그래서 내 프로그램에서 HttpWebRequest를 사용하여이 기능을 사용할 수 있습니까? – Ehsan