웹 서비스 세트가있는 ASP.NET 응용 프로그램이 있으며이 웹 서비스를 호출하는 WinForms 응용 프로그램이 있습니다.IIS 프로세스 우선 순위를 높이는 방법 (w3wp 및 iis apppool 모두)?
asmx 호출을 처리하는 w3wp.exe는 압축 (zip), XML 파싱 (parsing)과 같은 "하드"작업을 수행하는 특수 프로세스를 실행합니다. 우리가 별도의 프로세스에서 수행해야하는 이유와 왜 w3wp.exe에서이 코드를 실행하지 않는지에 대한 긴 이야기입니다. 여기서는 중요하지 않습니다. 그것은 그렇게되어야합니다.
많은 사용자가 여러 요청을 동시에 처리하면 30-40 개의 프로세스가있을 수 있으며 CPU를 소비합니다. 그들은 CPU 자원을 거의 소비하지 않기 때문에 IIS 자체에 소비됩니다.
그래서 문제는 다음과 같습니다. IIS에서 다음 HTTP 요청이 처리되면 IIS가이를 처리 할 수 없습니다. 서버가 "폭격"되어 w3wp.exe에 전달할 수도 없습니다. 그리고 결과적으로 피크 시간에 30 명의 사용자가 쿼리를 실행하고 31 번째 사용자가 WinForms 클라이언트에서 "Timeout expired"라는 WebException을 얻게됩니다.
인터넷에서 IIS를 조정하는 방법을 설명하는 기사가 많이 있지만 다른 프로세스 및/또는 응용 프로그램을 동일한 컴퓨터에서 실행할 수 있다는 사실을 아무도 고려하지 않았습니다. 그리고 아무도 만들지 말고 IIS가 최우선 순위가되도록하십시오.
그렇다면 질문은 다음과 같습니다. IIS가 기본적으로 apppool (svchost.exe) 및 w3wp.exe를 우선적으로 시작해야한다는 것을 "설명하는"방법이 있습니까?
우선 순위가 낮은 "특수 프로세스"를 시작하는 것은 어떻습니까? –
하드웨어를 추가 할 때가 좋습니다. – AaronS
@AaronS 더 나쁜 애플리케이션 디자인처럼 들립니다. 한 번에 30 가지 작업을 수행하여 서버에 물이 넘치면 시간이 지남에 따라 작업을 분산시켜야합니다. 비동기 적으로 작업을 수행하고 백그라운드 작업이 완료되면 사용자에게 다시보고하는 ASP.NET 응용 프로그램을 쉽게 개발할 수 있습니다. – Dai