우리는 라이브 환경에 새로운 앱을 배포하는 중입니다.
앱 서버는 EntityFramework를 사용하고 .NET COM+가 아닌 애플리케이션을 여러 번 호출하는 IIS 호스팅 .NET 애플리케이션을 실행하고 있습니다.
IIS 응용 프로그램 풀 내의 최대 작업자 프로세스 수를 수정하여 순수 .NET 코드의 성능에 영향을 줄 수 있었지만 제 질문은 작업자 프로세스 수가 구성 요소 서비스에 있는 응용 프로그램 풀의 풀 크기와 어떻게 관련되는지입니다. ? 같은 것들:
- 이 두 값 사이의 1:1 관계를 목표로 해야 할까요?
- 다중 작업자 스레드를 피해야 합니까?
감사하게도 통찰력을 얻었습니다 ...
답변1
두 풀의 작업자 프로세스 수는 직접적인 관련이 없습니다. 설정해야 할 것은 각 풀의 체류 시간입니다. 따라서 IIS 작업자가 바쁘고 전체 시간 중 아주 작은 부분만 COM 응용 프로그램에 소비된다면 COM 스레드가 성능에 병목 현상을 일으킬 가능성은 없습니다.
개별 풀의 크기를 제어하는 방법을 결정하려면 스트레스 상황에서 활성 스레드 수를 측정해 보십시오.
또한 IIS 작업자 프로세스는 프로세서 활용도 이외의 기준에 따라 재활용된다는 점도 고려하세요. 이는 호출 간에 데이터를 공유하는 능력에 상당한 영향을 미칠 수 있으며 직접적인 성능에 큰 영향을 미치려는 시도를 무너뜨릴 수 있습니다.
단일 .NET 쿼리에서 여러 요청을 집계할 수 있는 얇은 COM 래퍼를 고려하면 .NET에서 COM으로 브리징하는 비용을 줄이는 것이 더 좋습니다. 또한 여러 COM 메서드를 풀의 단일 스레드로 통합하는 부작용이 있을 수도 있습니다.