架构师_程序员_码农网

사용자 이름 비밀번호 검색
등록하기

QQ登录

시작하기 위한 한 단계

검색
조회수:7657|댓글: 5
打印 上一主题 下一主题

[NET/C# 멀티 스레드에서 HttpWebRequest 피치의 동시 사용

[복사 링크]
바로 가기 跳转到指定楼层
owner
2021-12-20 15:21:04에 게시됨| 해당 작성자만 보기回帖奖励| 역방향찾아보기| 읽기 모드
HTTP 요청 시작을 시뮬레이션하기 위해 작업 스케줄링을 하고 있는데, 작업 수가 많아지면 작업 스케줄링이 의사 사망하는 것 같습니다.

일반 Windows 시스템에서 요청되는 최대 연결 수는 2이고 서버 운영 체제에서는 10입니다. 이 동시 연결 제한을 변경하지 않으면 클라이언트가 수행할 수 있는 동시 HTTP 연결 수는 2 또는 10에 불과합니다.

System.Net.ServicePointManager.DefaultConnectionLimit 아래 그림과 같이 기본적으로 설정된 현재 최대 연결 수를 가져옵니다:



HttpClient에 기본 동시성 제한이 있나요?

예. .Net 4.0까지는 Http 작업을 위해 HttpWebRequest에 의존해 왔습니다. 기본값은 동일한 사이트에서 매우 보수적인 최대 2명의 동시성 제한으로 설정되어 있어 기본 HttpWebRequest가 원하는 속도를 얻지 못하는 경우가 많으므로(이 전략은 많은 코더를 실망시키는 것으로 추정됨) App.config 또는 ServicePointManager의 값을 수정해야 합니다. 값을 수정해야 합니다.

.Net 4.5의 MS는 Http 작업을 처리하기 위해 특별히 HttpClient 클래스를 도입했는데, 원래는 HttpClient와 HttpWebRequest가 동일한 전략을 따른다고 생각했습니다. 오늘 멀티 스레드 다운로드 애플리케이션을 작성하는 동안 10개의 동시 연결을 사용했는데 기본적으로 HttpClient에는 동시성 제한이 없다는 것을 알게 되었습니다.

Net 4.5에서이 동시성 제한을 취소 한 다음 (결국 기본적으로이 표준을 따를 사람이 없음) WebRequest로 관련 코드를 다시 작성한 결과 여전히 2 개의 동시 제한이 있고 ServicePointManager.DefaultConnectionLimit 값도 2라는 것을 발견했습니다. 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉, 즉: HttpClient는 HttpWebRequest 동시성 정책에 의해 제어되지 않으며 시스템 수준의 동시성 제한이 없습니다.

또한 테스트 결과 모든 주소의 동시성 제한이 2로 설정되어 있지 않은 것으로 나타났습니다. 예를 들어 로컬 http 주소 연결(http://localhost/*)에는 동시성 제한이 없습니다.

C# 멀티스레드 환경에서 HttpWebRequest 동시 연결 제한을 호출하는 방법

net의 HttpWebRequest 또는 WebClient에는 멀티 스레드 환경에서 동시 연결 제한이 있으며, Windows XP 및 Windows 7과 같은 데스크톱 운영 체제에서는 기본적으로 2개, 서버 운영 체제에서는 기본적으로 10개입니다. 이 동시 연결 제한을 변경하지 않으면 클라이언트에서 수행할 수 있는 동시 연결 수는 2개 또는 10개에 불과합니다. 이 제한을 변경하지 않으면 클라이언트가 동시에 설정할 수 있는 http 연결 수는 2개 또는 10개에 불과합니다. 브라우저나 웹 스파이더와 같은 애플리케이션의 경우 2개 또는 10개의 동시 연결은 너무 적어 애플리케이션의 성능에 큰 영향을 미칩니다. 이 동시 연결 제한의 이유는 http 1.0 및 http 1.1 표준에서 최대 동시 연결 수를 2로 지정하기 때문입니다. 그러나 주요 브라우저는 더 이상 이 규칙을 따르지 않지만 .net 프레임워크는 여전히 기본적으로 이 규칙을 따릅니다.

많은 문서에서 HttpWebRequest에 비동기식으로 액세스하면 동시성 성능이 향상될 수 있다고 하지만, 제 테스트에서는 기본 동시 연결 수를 변경하지 않으면 동기 및 비동기 액세스 모두 성능이 저하되는 것으로 나타났습니다.

app.config에서 최대 동시 연결 수를 다음과 같이 설정할 수도 있습니다:

다음 문서를 참조하세요.

h ttps:// blog.csdn.net/defender_/article/details/91949613
h ttps:// www.cnblogs.com/quanying/p/4629827.html





이전 기사이 애플리케이션을 계속 사용하려면 최신 버전을 적용해야합니다.
다음:타사 jar 패키지를 Nexus 비공개 저장소에 푸시하는 Maven 명령
收藏转播分享즐겨찾기0 리방송
코드 파머 네트워크는 연습 과정에서만 게시되어 다른 사람들을 오도하지 않고 기술적 인 어려움을 겪었습니다.
팬인지 아닌지 잘 모르겠습니다.
sofa
2021-12-26 17:20:57에 게시됨| 해당 작성자만 보기
배우기 。。。。。
코드 파머 네트워크는 연습 과정에서만 게시되었으며 기술적 인 어려움이 발생했으며 다른 사람들을 오도하지 마십시오.
연구 연구 。。。。。
연습 과정에서만 게시 된 코드 파머 네트워크는 기술적 인 어려움에 직면했으며 다른 사람들을 오도하지 마십시오.
floor
게시됨 2022-3-8 15:58:54| 해당 작성자만 보기
이번에도 좋은 거래를 할 수 있을지 잘 모르겠습니다.
코드 파머 네트워크는 연습 과정에서 기술적 인 어려움이 발생했을 뿐이므로 다른 사람들을 오도하지 마십시오.
무슨 말인지 잘 모르겠습니다.
5#
楼主|2023-2-18 21:47:09에 게시 됨 |只看该作者
코드 파머 네트워크는 연습 과정에서만 게시되었으며 기술적 인 어려움이 발생했으며 다른 사람들을 오도하지 마십시오.
어그 부츠 판매
6#
소유자|2023-3-10 21:21:15에 게시 | 해당 작성자만 보기
web.config를 통한 구성

코드 파머 네트워크는 연습 과정에서만 게시되었으며 기술적 인 어려움이 발생했으며 다른 사람들을 오도하지 마십시오.
답글 반대

신고

로그인해야 다시 게시할 수 있습니다 로그인하기 | 등록하기

이 버전의 통합 규칙 댓글 달기


면책 조항: 코드파머에서 제공하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용하도록 제한되며, 위 내용을 상업적 또는 불법적인 목적으로 사용할 경우 모든 결과는 사용자 본인이 부담해야 합니다. 네트워크에서 제공하는 사이트 정보, 저작권 분쟁은 본 사이트와 무관합니다. 다운로드 후 24시간 이내에 컴퓨터에서 위의 콘텐츠를 완전히 삭제해야 합니다. 프로그램이 마음에 들면 정품 소프트웨어를 지원하고 등록을 구입하여 더 나은 정품 서비스를 받으십시오. 침해가 있는 경우 이메일로 연락하여 처리해 주시기 바랍니다.

메일 To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|사이트맵

GMT+8, 2024-9-19 03:50

빠른 답글맨 위로 돌아가기목록으로 돌아가기