2013-09-24 3 views
3

요청 실행이 제한보다 낮은 경우에도 요청 대기열이 높은 이유는 무엇입니까? 우리는 아래에 사용하는요청 실행이 제한보다 낮은 경우에도 요청 대기열이 높은 이유는 무엇입니까?

  • 대상 프레임 워크 설정 : 닷넷 3.5 프레임 워크를
  • 응용 프로그램 풀 : 관리되는 파이프 라인 모드와 닷넷 프레임 워크 2.0.50727 - 통합
  • 그리고는 CPU의 더는 8입니다 그래서 maxconcurrentRequestperCPUx8 = 96
  • RAM : 24기가바이트은 Machine.config과 같은 기본 설정으로

pnet.config

우리는 ACT를 테스트하고 성능 카운터를 사용했습니다.

ASP.NET 앱 V2.0.50727 (_LM_W3SVC_2_ROOT) \ 요청 우리가 아래에 만든

을 변경

enter image description here

ASP.NET V2.0.50727의 \ 요청 지금

enter image description here

을 대기중인 실행

aspnet.config

<system.web> 
    <processModel autoConfig="false" maxWorkerThreads="4095" maxIoThreads="4095" minWorkerThreads="2047" minIoThreads="2047" /> 
</system.web> 

그리고이 Machine.config

에서
<system.web> 
     <applicationPool maxConcurrentRequestsPerCPU="5000" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/> 
</system.web> 

제공하는 응용 프로그램 풀 큐 제한 = 5000 이제 우리는 매우 적은 요청 상대적으로 대기 및 스냅 샷 묘사 아래와 같이 높은 요구가 실행이!

ASP.NET 앱 V2.0.50727 (_LM_W3SVC_2_ROOT) \ 요청

enter image description here

을 대기중인하지만 놀랍게도 평균

enter image description here

ASP.NET V2.0.50727의 \ 요청을 실행. ACT에서 초당 응답 시간은 개선되지 않았습니다.

enter image description here

그래서 내가 실행 요청이 더 내 경우 (한계 이하일 때

1) 왜 요청도 대기하지 않습니다이 ... 질문 아래에 있습니다. CPU의 X maxconcurrentrequestperCPU = 8 × 12 = 96)?

2) aspnet.config, machine.config를 변경하고 Application Pool Queue Limit = 5000을 제공하더라도 요청 대기열이 나타나는 이유는 무엇입니까?

3) 요청 실행 카운터가 높을수록 ACT 응답 시간이 개선되지 않는 이유는 무엇입니까?

도움을 주시면 감사하겠습니다 !!

감사합니다,

Sandeepkumar 굽타

답변

0

Thomas L. Marquardt 설명하고 심지어 minWorkerThreads 매개과 minIoThreads 증가로 모든 것을처럼 보인다.

, 당신에게 일반적으로

에 영향을 미치는 기본 구성으로 실행 할 수있다 connectionManagement/MAXCONNECTION에 관한 흥미로운 부분이 있습니다 가장 잘 작동합니다. 백엔드 웹 서비스와 통신 할 때 대기 시간이 100 밀리 초라고 측정되는 대기 시간이있는 응용 프로그램은 몇 가지 구성 변경을 통해 의 성능이 향상됩니다. ASP.NET 응용 프로그램은 당신이 증가 connectionManagement해야 할 수도 HTTP를 통해 백엔드와 통신하는 웹 서비스 (WFC 또는 ASMX) 또는 System.Net을 사용하는 경우

그 후/

을 권장 maxconnection. ASP.NET 응용 프로그램의 경우 autoConfig 기능에 의해 12 * #CPU로 제한됩니다. 이것은 쿼드 프로세스에서 IP 끝점까지 최대 12 * 4 = 48 개의 동시 연결을 가질 수 있음을 의미합니다.

그리고 응용 프로그램 시작시 동시 요청의 큰 숫자를보고 또는 동시성 증가 갑자기 응용 프로그램 비동기을해야하는 버스트 부하가있는 경우, 슬프게도 그는

는 추가 CLR ThreadPool이 이러한로드에 제대로 응답하지 않기 때문입니다.