2009-08-12 3 views
1

다른 서버의 WCF 서비스에 7 개의 비동기 요청을 보내는 asp.net 웹 페이지가 있습니다. 두 상자 모두 다른 것이 설치되어 있지 않아도 깨끗합니다.Wcf ThreadPool 및 async

나는 또한이 시스템을 통해 단일 통화와 800ms에서 페이지 반환을 실행 (20)

에 Web.config의에서의 MaxConnections 증가했습니다. 그것의 길고 짧게는 두 개의 쿼드 코어 박스가 20 %의 CPU 부하와 연결된 SQL 서버에서 실행 되더라도 초당 8 개의 요청을 얻을 수는 없으므로 쓰레드 풀이 압도 당하고 있다고 생각합니다 to는 호출 당 10ms 이하로 querys를 반환합니다.

서비스 동작을 concurrency.multiple로 변경했지만 도움이되지 않습니다.

아무도 아이디어가 없습니다.

+0

, 추가 정보가 도움이 될 수 있습니다. 서비스는 어떻게 호스팅됩니까? 어떤 버전의 OS, .NET 프레임 워크입니까? 어떤 버전의 IIS 등 .. –

답변

3

여기에는 여러 가지 요인이있을 수 있습니다. 서비스에서 인스 턴싱 모델을 변경하는 것이 효과가 없다면 (큰 IF 인 경우) '병목 현상'이 서비스의 업스트림입니다. 웹 서버 또는 클라이언트로드 생성기 중 하나.

클라이언트, 웹 서버, wcf 서비스 서버 - 중간에 네트워크 장치가 없다고 가정하면 조정할 부분을 검토 할 수 있습니다. 끝을 고르고 다른 끝을 향하여 작업하십시오. 나는 이미 서비스가 아니라는 가정을하고 있기 때문에 클라이언트에서 시작하여 wcf 서비스로 나아갈 것입니다.

클라이언트
웹 서버에 대한 부하를 발생시키는 기계는 무엇입니까? 노트북? 데스크탑? 전용 테스트 에이전트 또는 공유 에이전트? 이 테스트의 목적으로로드 생성기 역할을하는 클라이언트는 이기 때문에 클라이언트 설정이므로 maxConnections 제한에 취약합니다.

로드를 생성하는 클라이언트의 CPU 사용률은 얼마입니까? 테스트 드라이버가이 상자를 누르기에 충분한로드를 생성 할 수 없습니까? 테스트 클라이언트를 추가 할 수 있습니까?


가 무엇 system.net/processModel 요소는 ASP.NET 웹 서버의 machine.config에 생겼 웹 서버? autoConfig = true로 설정하십시오. 이렇게하면 실행중인 시스템의 '크기'를 기반으로 자동 구성이 구성됩니다. 플레이하고 적절하게 조정할 수있는 조절 기본값에 대한

WCF 서비스
검토 WCF 서비스를 제공합니다. MSDN의 ServiceThrottlingBehavior을 참조하십시오.

변경 사항이있는 경우 (있는 경우) 발생할 수있는 모든 변경 사항을 알려주십시오!

0

이 서비스는 IIS, WAS 또는 Windows 서비스에서 호스팅됩니까?

우선 순위가 높은 서비스를 실행하도록 Windows를 설정해야합니다. WCF 서비스가 아마도 필요한 스레드를 생성하고 있지만 우선 순위가 낮아야합니다.

희망이 있습니다.

1

모두가 놓친 진정한 대답은 ASP.NET 웹 페이지를 사용하고 있다는 것입니다.즉, 클라이언트가 웹 브라우저의 일부 형태임을 의미합니다. 최신 웹 브라우저는 언제든지 동시 비동기 요청을 2 개까지 제한합니다. 즉, 5 개의 요청이 대기열에 있고 처음 두 개가 완료되기를 기다리는 중입니다. 처음 두 개가 나왔을 때 다음 2 개, 다음 2 개, 그리고 마지막 2 개를 제공했습니다.

이러한 왕복 및 핸드 셰이크는 모두 시간이 걸립니다. 왕복 시간이 약 200ms라고 생각합니다. 불행히도 4 번해야합니다.

나는 또한 webservice 호출을 할 때 "최대 2"브라우저 제한을 싫어합니다. @Laphael 당

+0

여러분의 권리는 클라이언트를 동시 요청 2 개로 제한하는 것입니다. 그러나이를 재정의 할 수 있으며 서버 응용 프로그램에 적합해야합니다. @ RubbleFord는 이미 20으로 설정했다고 언급했기 때문에 답변에서 명시 적으로 호출하지 않았습니다. 이것을 지적 해 주셔서 고마워요, 저는 이것을 명확하게하기 위해 제 응답에서 강조했습니다. 아마 알고 있을지 모르지만, 경우에 따라 http://msdn.microsoft.com/en-us/library/1tkaca2y.aspx를 참조하십시오. 감사! Z –

+0

당신은 여전히 ​​클라이언트를 브라우저가 아니라 응용 프로그램으로 생각하고 있습니다. 게시 한 링크는 특히 응용 프로그램의 구성 파일을 수정하기위한 것으로 ASP.NET 페이지에는 * 가지고 있지 않습니다. IE가 엄격하게 표준을 따르는 경우입니다.이 경우에는 HTTP1.1을 다루는 RFC2616 입니다. RFC에서 : 영구 연결을 사용하는 클라이언트는 주어진 서버에 대해 유지 관리하는 동시 연결 수를 제한해야합니다. 단일 사용자 클라이언트는 서버 또는 프록시와 2 개를 초과하는 연결을 유지하면 안됩니다 (SHOULD NOT). – JustLoren

+0

귀하의 권리와 나는 우리 모두가 정확하다고 생각합니다. 브라우저는이 설정을 극복하기 위해 조정할 설정 파일이 없을 수도 있습니다 - 100 % 동의하십시오. 그러나 웹 페이지에 대해로드를 유도하는 대부분의 테스트 에이전트 및 도구는 브라우저 자체가 아니라 프로토콜 (http) 수준에서로드를 수행합니다. 이 테스팅 에이전트가 .NET 기반 (Visual Studio Team Test, 사용자 정의 .net 코드 등) 인 경우 변경되지 않는 한 해당 테스팅 에이전트는 해당 제한을 받게됩니다. 테스트 에이전트에서 웹 사이트로 요청한 다음, 웹 사이트에서 웹 서비스로의 요청은 현재 사이트가 서비스의 클라이언트이기 때문에 제한 될 수 있습니다. –