2012-02-16 3 views
3

IIS 호스팅에서 호스팅되는 사이트가 있습니다. 사이트에는 WCF 서비스를 호출하고 결과를 반환해야하는 기능이 있습니다. 문제는 사이트가 WCF 서비스를 호출하는 다른 웹 사이트 호출이 멈추고 콘텐츠를 빨리 반환하지 않는다는 것입니다 (이것은 단지 정적 인 내용입니다). 두 개의 크롬 인스턴스를 서로 다른 imacros 스크립트로 설정합니다. 하나는 wcf 서비스를 요청하고 다른 하나는 정적 컨텐츠 일뿐입니다. 그래서 여기에서는 wcf 서비스를 요청하는 첫 번째 페이지가 멈 추면 다른 한 페이지도 멈추고 처음 릴리스 될 때 두 번째 페이지도 해제된다는 것을 알 수 있습니다.IIS 작업자 스레드 문제

Web.Config에서 뭔가를 다시 구성해야합니까? 그렇지 않으면 정적 콘텐츠를 즉시 얻을 수 있도록 다른 작업을 수행해야합니까?

+0

웹 사이트가 실행되는 IIS 버전은 무엇입니까? –

+0

IIS 7.5, 공유 호스팅입니다. – kseen

+0

대기중인 요청이 여러 개인 경우 두 페이지 요청 (서비스 페이지에 하나, 정적 페이지에 하나씩)이 발생합니까? – Ragoczy

답변

2

나는 여기에 두 개의 별도의 문제가 있다고 생각 :

  1. 가 왜 WCF 서비스 동결
  2. 를 사용하는 페이지가 왜 정적 콘텐츠 페이지가 페이지에서

을 동결 않습니다 않는 일반적인 문제는 WCF 클라이언트가 닫히지 않는다는 것입니다. 기본적으로 10 분의 WCF 연결과 1 분의 시간 제한이 있습니다. 처음 10 회의 통화는 정상적으로 진행되고 (예를 들어 2 초 실행), 11 번째 호출이 발생합니다. 무료 wcf 연결이 없으므로 연결 시간이 58 초를 초과하여 사용 가능해야합니다.

정적 페이지가 정지되는 이유에 대해. 클라이언트가 사이트에 단 하나의 연결 만 허용 할 수 있으며 wcf 서비스가있는 페이지에 대한 요청이 완료 될 때까지 정적 페이지에 대한 요청이 전송되지 않을 수 있습니다.

IIS 로그를 검사하여 IIS에서 요청을 처리하는 시간을 확인해야합니다.

1

나는 이것이 스레딩 문제라고 말할 것입니다. ... 당신이 조정할은 Machine.config에서 다음 매개 변수가 가장 적합한에 제기 할 수 있습니다 - 기사에서

http://support.microsoft.com/kb/821268

:이 MSDN KB 기사는 방법을 조정할 ASP.NET 스레딩 행동에 몇 가지 제안이있다 상황 :

  • maxWorkerThreads
  • minWorkerThreads 매개
  • 와 maxIoThreads
  • 명을, minFreeThreads
  • minLocalRequestFreeThreads
  • MAXCONNECTION
  • executionTimeout에

성공적으로 이러한 문제를 해결하려면 다음을 수행하십시오

  • 제한 같은에서 실행할 수있는 ASP.NET 요청의 수 CPU 당 약 12 ​​시간.
  • 웹 서비스 콜백이 ThreadPool의 스레드를 자유롭게 사용할 수 있도록 허용합니다.
  • maxconnections 매개 변수에 적절한 값을 선택하십시오. 사용 된 IP 주소 및 AppDomains의 수를 기반으로 선택하십시오. 등

...

+0

나는 공유 윈도우 호스팅을하고있어 내 자신의 web.config 파일 만 조정할 수있는 것 같습니다. 귀하의 접근 방식은이 조건에 부합합니까? – kseen

+0

나는 그렇게 생각하지 않는다. machine.config에서이 설정을 변경해야합니다. MSDN에서 (http://msdn.microsoft.com/en-us/library/7w2sway1.aspx) : * processModel 섹션은 Machine.config 파일 내에서만 설정할 수 있습니다. * –

+0

어떻게 '웹 서비스 호출 허용 ThreadPool에서 자유롭게 쓰레드를 사용할 수 있습니다. ' 목? 제발 조언. – kseen

0
당신은 AppFabric을 사용하고 WCF 서비스에 어떤 문제가 있는지보기 위해 시도 할 수

http://msdn.microsoft.com/en-us/windowsserver/ee695849

+0

AppFabric이 제대로 작동하지 않는 경우 IIS에서 WCF 서비스가 호스팅되는 경우에만 AppFabric이 도움이 될 수 있습니까? – kseen

+0

예. 당신이 올바른지. WCF 서비스는 어디에서 호스팅됩니까? 가능하다면 웹 서비스를 이중화로 호출하고 응답을 즉시 기다려야합니다. – marvelTracker

+0

콘솔 응용 프로그램에서 호스팅되는 자체 호스팅 WCF 서비스입니다. 양면 전화는 내가 원하는만큼 적합하지 않다. – kseen

1

같은 시나리오를 생각해보십시오 : 앱 변경, 삭제를 IIS 요청을 할 때 또는 App_Data 폴더 외부에 파일을 생성합니다. 이것은 종종 실수로 로그 파일이되는 경향이 있습니다. bin 폴더에 있습니다. 파일 시스템 변경으로 인해 AppDomain이 IIS에 의해 다시로드되는 것은 응용 프로그램이 변경된 것으로 간주되므로 숙련 된 지연입니다. 이 문제는 귀하의 문제에 적용될 수도 있고 적용되지 않을 수도 있지만 ASP.NET 응용 프로그램에서는 흔히있는 실수입니다.

1

글쎄, 어쩌면 아무 문제가 없다 ...

그것은 동시 요청이 제한 단지 브라우저의 동일한 도메인 수 있습니다

.
브라우저가 첫 번째 페이지 (WCF 페이지)에 대한 요청을 완료하지 않으면 두 번째 페이지 (정적)로 요청을 보내지 않습니다.

이 시도 :
를 사용하여 다른 브라우저 (예 : 크롬/파이어 폭스 용) 각 페이지.
시크릿 창에서 크롬의 두 번째 페이지를 엽니 다 (Ctrl + Shift + N).
또는 다른 컴퓨터에서 각 페이지에 액세스 해보십시오.