재우니의 블로그

 

최대 작업자 프로세스 (maximum worker processes) 가 1 이상인 경우 API 응답 속도가 빠릅니까?

 

 

며칠 전부터 아키텍처/프레임워크에 변화가 없음에도 불구하고 API 의 실행 속도가 느리고 응답 시간이 길어진다는 것을 알게 되었습니다.

 

모든 서버가 안정적인 모드로 실행되고 있었습니다(알람 없음). 몇 번의 연구 끝에 나는 아래의 해결책을 찾았고 그것은 효과가 있었습니다. 솔루션에 대해 설명하기 전에 API 흐름도를 살펴보겠습니다.

 

보시다시피 로드 밸런서는 웹 서버와 분산 데이터 서버에 데이터 호출을 하는 웹 서버에 요청을 보냅니다. 아래 이미지에는 데이터 서버의 모든 요청을 처리하는 Worker Process 가 하나 있습니다.

 

모든 데이터 서버가 가동되고 데이터를 즉시 반환하는 경우 단일 Worker Process 가 정상적으로 작동합니다.

 
 
https://medium.com/@sanjay.rajak/does-api-response-fast-if-maximum-worker-processes-is-more-than-1-4b877af6b951

 

 

그러나 하나의 데이터 서버가 느리게 응답하고 몇 가지 문제가 있는 경우에는 어떻게 될까요?  😒😒😒😒

 

단일 Worker Process 에서는 데이터베이스 쿼리가 오래 실행되고 동기식 트랜잭션이 오래 실행되기 때문에 다른 API 호출을 완료해야 합니다 (다른 데이터 서버가 빠르게 응답하는지 여부는 중요하지 않습니다).

하나의 데이터 서버 문제로 인해 단일 Worker Process 의 경우 다른 API 응답이 느려집니다. 😢😢😢😢😢

 

 

https://medium.com/@sanjay.rajak/does-api-response-fast-if-maximum-worker-processes-is-more-than-1-4b877af6b951

 

 

느린 데이터 서버가 다른 API 호출에 영향을 미치지 않도록 하기 위해 더 많은 Worker Process 를 만들 수 있으므로 하나의 Worker Process 가 유휴 상태이거나 실행하는 데 오랜 시간이 걸리면, 다른 Worker Process가 로드를 처리하고 API 호출을 통해 데이터를 처리할 수 있습니다.

 

 

 

https://medium.com/@sanjay.rajak/does-api-response-fast-if-maximum-worker-processes-is-more-than-1-4b877af6b951

 

 

Web Garden

 

Web Garden (Worker 프로세스의 #는 > 1로 설정 됨)은 CPU-bound 이 아니지만 장기간 실행되는 응용 프로그램을 제공하여 확장 할 수 있는 기능을 제공하고, Worker Process 에서 사용할 수 있는 모든 스레드를 사용하지 않도록 설계되었습니다. .

 

 

다음과 같은 경우에 도움이 될 것입니다.

 

 

  • 장시간 실행 데이터베이스 요청(database) 을 하는 애플리케이션
  • 장시간 실행 동기(synchronous ) 프로세스가 Thread 를 차지하는 응용 프로그램
  • 예를 들어 응용 프로그램이 backend 에서 데이터베이스를 호출하고 응답이 느린 경우, Web Garden 은 느린 연결이 완료될 때까지 기다리지 않고 다른 동시 연결을 지원합니다.

 

 

worker process(Web Garden) 의 개수를 늘리는 방법?

 

  1. IIS를 엽니다( 시작 > inetmgr) .
  2. 왼쪽 탐색 창에서 애플리케이션 풀 선택
  3. Secret Server가 실행 중인 응용 프로그램 풀을 찾습니다. (이를 확인하려면 왼쪽에서 사이트 를 확장한 다음 Secret Server가 실행 중인 웹사이트를 찾습니다. Secret Server 웹사이트 또는 가상 디렉터리(하나에서 실행 중인 경우)를 클릭 하고 오른쪽 패널에서 기본 설정 을 클릭합니다. 이렇게 하면 다음이 표시됩니다. Secret Server의 애플리케이션 풀).
  4. 응용 프로그램 풀을 마우스 오른쪽 단추로 클릭한 다음 [고급 설정] 을 클릭합니다 .

 

 

 

 

Web Garden 이란 무엇일까요?  IIS 7.0 [codeproject.com]에 ASP.NET 웹 사이트 배포 에서 다음과 같이 정의하고 있습니다.

 

 

기본적으로 각 응용 프로그램 풀은 단일 Worker Process (W3Wp.exe)로 실행됩니다.,단일 응용 프로그램 pool 을 사용하여 여러 Worker Process 를 할당할 수 있습니다. 여러 Worker Process가 있는 응용 프로그램 풀을 "Web Garden" 이라고 합니다.
동일한 응용 프로그램 풀을 사용하는 많은 Worker Process 는 때때로 더 나은 처리량 성능과 응용 프로그램 응답 시간을 제공할 수 있습니다. 그리고 각 Worker Process 에는 고유한 스레드 및 자체 메모리 공간이 있어야 합니다.

 

참고 : 이는 모든 경우에 도움이 되지 않습니다, 당연히 서버에서 CPU 사용량을 조사해야 합니다.

멀티 프로세서 웹 서버 (대부분의 서버에는 하나가 있음)가 있고, 성능을 얻지 못하면 Web Garden 을 고려할 수 있습니다. 기본적인 아이디어는 IIS 서비스를 위한 단일 Worker Process 대신 Web Garden 에 CPU 당 하나의 작업자 프로세스가 있어 성능을 향상시키는 것입니다.

 

 

➡️ CPU 에 병목 현상이 있는 경우, worker processes 를 추가해도 성능이 향상되지 않습니다.

 


 

원문사이트

 

https://medium.com/@sanjay.rajak/does-api-response-fast-if-maximum-worker-processes-is-more-than-1-4b877af6b951

 

Does API response fast if maximum worker processes is more than 1 ?

Short answer is NO but it supports other concurrent connections without waiting for the slow connection to complete.

medium.com

 

IIS 7.0 [codeproject.com]에 ASP.NET 웹 사이트 배포

 

Deploying ASP.NET Websites on IIS 7.0

This article describes some features and architecture of IIS 7.0 and deployment of ASP.NET sites on IIS

www.codeproject.com