2012-01-24 3 views
2

우리는 동시 사용자를 10000 명 처리해야합니다.w3wp.exe가 최대 스레드 수를 초과했습니다

시스템을 설명해 드리겠습니다. 머신에는 2 개의 프로세서가 있습니다. machine.config의 ProcessModel은 autoconfig = true로 설정됩니다. 그래서하게 maxWorkerThreads = 20 나는 그것이 (100)와 W3wp.exe를에 스레드의 수에있다 maximing되는 CPU 사용량을 30 사용자 내 케이스를 실행하고 볼로드

더 내 기본값은 20이므로 70 다음 CPU가

지금 같은 WorkerProcess 개체에 할당 1. 어떻게받을 수 있나요 30 개 이상의 스레드에 의문을 제기 응답하는 최대 시간을 말하는 거래의 대부분은 실패 100 % 접촉 또는 일단 * 2 (CPU의)는 40

을 =? 2. 여기에서 CPU 사용량을 줄일 수있는 방법은 무엇입니까?

+2

당신이 진정이 전문 소프트웨어 및 라이브러리와 가능할 수 있지만, 10,000 명의 동시 사용자를 처리 할 필요가있는 경우 - 가장 설치 여러 서버와에 통보 것을로드 균형. – ziesemer

+0

로드 밸런싱 env가 있습니다. 첫째로 나는 나의 경우에 30 명의 사용자를 여기에서 시도하고있다. IIS는 동시 사용자가 30 명인 경우에만 최대화됩니다. – Praneeth

+1

정확히 무엇이 문제인지, 프로세서 당 스레드 풀에있는 20 개의 작업자 스레드가 반드시 w3wp.exe 프로세스가 40 개의 스레드 만 사용한다는 것을 의미하지는 않습니다. 스레드 수가 증가해도 CPU가 이미 최대 인 경우 처리 된 HTTP 요청은 증가하지 않습니다. CPU 사용량을 줄이려면 코드 분석이 필요합니다. –

답변

1

여기에 약간의 문제가 있습니다. 스레드 수를 늘리면 은 CPU 사용량이 증가합니다. (2 가지 목표는 호환되지 않습니다.) 각 CPU에 더 많은 작업을 수행 할 것을 요구하는 것뿐만 아니라 컨텍스트 전환에 추가 오버 헤드가 있습니다.

기본적으로 CPU 당 1-2 개의 스레드 만 의미하는 논 블로킹 IO 라이브러리를 사용하여 조사 할 수 있습니다. 그러나 이것은 프로젝트에 중요한 아키텍처 변경이 될 수 있습니다 (아마도 실현 가능하지 않을 수 있습니다). 실제로 찾을 수있는 것은 코드의 작업으로 인해 CPU의 대부분이 실제로 소비되었지만 스레딩 관련 .

애플리케이션의 성능 튜닝 및 최적화가 필요한 것 같습니다.

관련 문제