2 가지 주요 목표를 가진 winservice를 실행 중입니다.다르게 WCF 스레드를 설정하는 방법
- 노출 된 웹 메소드 실행/처리.
- 실행 CPU 할당량을 사용하는 내부 프로세스. 스레드 풀 또는 TaskPool을에 대기하고 있습니다 (작업 등) WCF는 같은 스레드에 그것의 실행을 큐 같이 webMethods의 실행이 훨씬 더 많은 시간이 걸립니다 |
문제는 그 많은 내부 프로세스를 실행할 때이다. 내부 프로세스 작업 우선 순위를 가장 낮게 설정하고 webmethod 스레드 우선 순위를 높이로 설정하는 경우에도 이러한 상황이 발생합니다.
프레임 워크 4.0에서이 기능이 향상되기를 기대했지만 CPU가 다른 내부 작업을 처리하는 경우 WCF 대기열에있는 작업을 시스템이 처리하는 데 많은 시간이 걸립니다.
- WCF에서 사용하는 스레드 풀을 다른 것으로 변경할 수 있습니까?
- 작업 큐를 수동으로 변경할 수 있습니까 (글로벌 작업 큐, 로컬 작업 큐)?
- 다르게 동작하는 2 개의 작업 대기열을 수동으로 처리 할 수 있습니까?
이 주제에 대한 도움이 필요합니다.
길래드.
저는 ThreadSpool이 기본적으로 더 많은 스레드를 생성하도록하는 SetMinThreads를 사용했습니다. 이것은 부분적으로는 문제를 해결하지만로드가 매우 낮을 때에도 프로세스가 스레드 할당을 활성화합니다. 스레드 풀 대기열을 차단하는 작은 작업이 할당되어있을 때이 문제를 완전히 해결하지 못합니다. 스레드 우선 순위를 변경하면 모든 내부 스레드를 억제하고 사용자의 요청에 우선 순위를 부여 할 수 있지만 스레드 풀이 작업을 실행 한 경우에만 가능합니다. Thread.CurrentThread.Priority = ThreadPriority.Highest – Gilad